Unity 3D游戏开发 - U3D入门 | 物理组件之刚体

变换组件运动特点

  • 变换组件运动特点(Transform.Translate()方法
    • 移动的物体会 “穿透” 场景中其他的物体模型;
    • 移动的物体不会受重力影响(到达场景边缘外,不会下落)。

刚体组件简介

  • 刚体简介
    • 刚体:Rigidbody,属于物理类组件。
    • 作用:添加了刚体组件的游戏物体会有重力,意味着可以像现实中的物体一样运动。
  • 给物体添加刚体组件
    • 选中游戏物体 --> 菜单 Component --> Physics --> Rigidbody

刚体组件属性

  • Mass [质量]
    • 设置物体的质量,单位是 KG。
  • Drag [阻力]
    • 空气阻力,0表示无阻力,值很大时物体会停止运动。
  • Angular Drag [角阻力]
    • 受到扭曲力时的空气阻力,0表示无阻力,值很大时物体会停止运动。
  • Use Gravity [使用重力]
    • 是否使用重力

使用刚体移动物体

  • 方法
    • Rigidbody.MovePosition(Vector3):使用刚体移动物体的位置。
    • 使用刚体移动物体,物体是根据世界坐标系的方向移动的,且会触发相关物理事件。
  • 参数
    • MovePosition 中的 Vector3 要使用 “当前位置” + 方向 的方式。
    • Transform.Position:属性 当前物体的位置。
      private Rigidbody m_Rigidbody;
      private Transform m_Transform;
      
      void Start()
      {
         m_Rigidbody = gameObject.getComponent<Rigidbody>();
         m_Transform = gameObject.getComponent<Transform>();
         
      }
      
      void Update()
      {
         if(Input.GetKey(KeyCode.W))
         {
            m_Rigidbody.MovePosition(m_Transform.Position + Vector3.forward*0.2f);
         }
      
         if(Input.GetKey(KeyCode.S))
         {
            m_Rigidbody.MovePosition(m_Transform.Position + Vector3.back*0.2f);
         }
      
         if(Input.GetKey(KeyCode.A))
         {
            m_Rigidbody.MovePosition(m_Transform.Position + Vector3.left*0.2f);
         }
      
         if(Input.GetKey(KeyCode.D))
         {
            m_Rigidbody.MovePosition(m_Transform.Position + Vector3.right*0.2f);
         }
      
      }

猜你喜欢

转载自blog.csdn.net/weixin_41232641/article/details/82142088