刚体(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;
              }
          }
      }
    

相关参考

  • 物体的移动方式总结