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

Unity中控制刚体运动
本文介绍了在Unity中使用C#脚本控制游戏物体中刚体组件的不同方法,包括冻结所有运动、设置速度为零、使用Sleep()和WakeUp()方法以及通过isKinematic属性控制运动状态。

  • 代码如下:
[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后可以自定义运动轨迹。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值