0805
视频 18 物理弹球场景 小球弹射
物理弹球Demo制作

- 需求分析

-
小球
小球.png
-
障碍物
障碍物.png
-
道具
道具.png
- 2D工程创建

- 场景构建 00:13:00——00:45:00

- 小球发射代码创建 00:45:00——01:09:00

-
控制小球 给小球一个初始的方向进行发射
-
在类下定义刚体类型的变量
Rigidbody2D _rigidbody2D;
-
在start方法下获取刚体组件
_rigidbody2D = GetComponent<Rigidbody2D>();
-
在update方法下写一个If条件 条件的参数是输入鼠标左键后响应里面语句
if (Input.GetMouseButtonUp(0)) { }
-
在if条件里调取刚体的施加力的工具
_rigidbody2D.AddForce();
-
AddForce需要传入一个二维向量的参数 那么我们需要计算这个参数 光标的位置和球这两个点中间的连线就是一个由球指向光标的向量
-
光标的位置是屏幕的坐标系 可以通过相机下main进行转换 用main获取的前提是相机的tag需要选中MainCamera 在main里调取屏幕坐标转换成世界坐标的工具是ScreenToWoeldPoint()里面的参数是需要转换的位置Input.mousePosition 此时获取的光标位置用一个变量装起来 var是自配置类型
var mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
-
这个力的方向可以通过所挂代码的物体的位置的向量与光标的位置相减求得
var _direction = mousePos - transform.position;
-
向量具有大小和方向 需要归一化 求得单位向量才能实现只用其方向
向量归一化.png
_direction.Normalize();
-
默认状态下世界坐标系是xyz三个坐标轴的 因为此时是一个2D工程 我们可以把最后求出来的向量的类型改成一个二维向量
Vector2 _direction = mousePos - transform.position;
-
rigidbody下的sleeping mode可以调整开始的状态 以防游戏一运行就往下掉
-
注释掉还未传入参数的语句 在归一化向量的前后观察求得的_direction的值可以通过
Debug.log(_direction); //_rigidbody2D.AddForce();
进行检验观察
-
传入求得的向量的参数后 还需要进行选择ForceMode2D是一个持续的力Force还是一个瞬间的力Impulse
_rigidbody2D.AddForce(_direction,ForceMode2D.Impulse);
-
运行后发现力比较不合适 需要一个可以进行调节的力 在类下再定义一个公有浮点型变量 并进行赋值 在施加力的语句的参数的向量乘上这个可以进行调节的力 给向量乘上一个值相当于把单位向量进行了延长
public float ForceSize=1;
-
-
让球弹起来 01:09:00——01:15:48
让球弹起来.png
- 在assets下新建一个物理材质的文件夹 并给小球建一个Physic Material 并赋给小球的collider上的material的空槽里 物理材质的意思是使物体具有一定的物理属性 可以定义摩擦力和弹力
网友评论