刚体(Rigidbody)
刚体的作用
- 刚体是会受到力学作用的物体。
- 如果让一个物体变为刚体,只需要给物体添加
Rigidbody
组件。
刚体的属性
属性 | 说明 | 用法 |
---|---|---|
mass | 刚体的质量。 | 质量越大的物体越稳,需要更大的力才能改变刚体的运动状态。 |
useGravity | 是否受到重力。 | |
-- | -- | -- |
用刚体使物体运动
有两种方式能是刚体运动起来:
- 给物体施加力,能改变物体的运动。
- 直接设置物体的速度。
给刚体施加力
- 如果持续施加力,最好在
FixedUpdate
里加,这样能保证力是均匀施加的。 在
Update
中通常只在条件满足时施加一次力。// 弹弓发射小球 void Update () { // 记录鼠标按下时的位置 if (Input.GetMouseButtonDown (0)) { start = Input.mousePosition; } if (Input.GetMouseButtonUp (0)) { // 记录鼠标抬起时的位置 Vector3 end = Input.mousePosition; // 计算发射的方向向量 Vector3 delta = start - end; // 将(x,y)的屏幕坐标系转为(y, z)的世界坐标系 Vector3 newDelta = new Vector3(0, delta.y, delta.x); // 发射 rigidbody.AddForce(newDelta * 4); rigidbody.useGravity = true; } }
刚体的速度
- 既可以通过
rigidbody.velocity
获取对象的速度,也可以用它来设置速度,让物体运动起来。 rigidbody.velocity
是一个向量,我们可以获取到每一个轴向的分速度。这样我们就可以通过y轴的速度知道物体中上升还是下降。// 跳跃 void Update () { if (Input.GetButtonDown ("Jump")) { // 在有在地面上才能跳 if ( rigidbody.velocity.y == 0) { // 仅修改y轴方向的速度 Vector3 v = rigidbody.velocity; v.y = 10; rigidbody.velocity = v; } } }
相关参考
- 物体的移动方式总结