Unity让带有Rigidbody组件的游戏对象停止运动


  • 代码如下:
[SerializeField]
private GameObjecct m_Soccer;

m_Soccer.GetComponent<Rigidbody>().constraints = RigidbodyConstraints.FreezeAll;//第一步,让刚体停下来(“冻结”位移、旋转)
m_Soccer.GetComponent<Rigidbody>().constraints = RigidbodyConstraints.None;//第二步,让刚体能被后续控制做运动

//注:RigidbodyConstraints这个枚举对应刚体的某个方向上的位移或者旋转增量为零(None除外,不加限制),有时间的可以测一测

  • PS:最近又有点心得,得到另一个方法:
m_Soccer.GetComponent<Rigidbody>().velocity = Vector3.zero;//运动速度为0,自然也就不运动了,这里的velocity是一个矢量

  • 2333333,又研究出了一个方法:
void Update () {
        if (Input.GetKey(KeyCode.Q))
        {
            GetComponent<Rigidbody>().Sleep();//停止运动
        }
        else
        {
            GetComponent<Rigidbody>().WakeUp();//开始运动
        }
	}

  • 呃,好像还忘了一个,补上:
//按下Q键切换运动状态
if (Input.GetKeyDown(KeyCode.Q))
        {
            GetComponent<Rigidbody>().isKinematic = !GetComponent<Rigidbody>().isKinematic;
        }
        //isKinematic :是否遵循运动学,为true后可以自定义运动轨迹。

你可能感兴趣的:(举个例子,unity,刚体运动)