Unity中刚体rigidybody的velocity和Addforce方法的不同

初学Unity,把自己的心得体会记录一下。如有错误欢迎指正。

  • 从字面理解velocity是速度,force是推力。
  • veloctiy是瞬间让刚体朝一个方向达到一个速度,会无视已经作用在物体上的其他物理移动。例如:一个球体在平面断桥上滚动,连续用velocity方法让其向前滚动,会直接通过断桥,不会掉下去。如果 球体在向前滚动时通过velocity方法给一个vector3.up方向的速度球体会垂直向上原地 弹起,这说明球体无视了原来向前滚动的力量惯性。如果用addforce方法给一个vector3.up的力,球体会向前跳起,考虑了原来已经作用在球体上向前的惯性。

Addforce方法还有四种不同模式,目前还没搞懂太清楚。弄清楚了再来记录一下。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Unity使用刚体移动物体,可以通过改变刚体的速度、力、加速度等属性来实现。以下是一些常用的方法: 1. 通过设置刚体的速度来移动物体: ```csharp public Rigidbody rb; public float speed; void Update() { float moveHorizontal = Input.GetAxis("Horizontal"); float moveVertical = Input.GetAxis("Vertical"); Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical); rb.velocity = movement * speed; } ``` 2. 通过施加力来移动物体: ```csharp public Rigidbody rb; public float speed; void FixedUpdate() { float moveHorizontal = Input.GetAxis("Horizontal"); float moveVertical = Input.GetAxis("Vertical"); Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical); rb.AddForce(movement * speed); } ``` 3. 通过改变刚体的位置来移动物体: ```csharp public Rigidbody rb; public float speed; void Update() { float moveHorizontal = Input.GetAxis("Horizontal"); float moveVertical = Input.GetAxis("Vertical"); Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical); rb.MovePosition(transform.position + movement * speed * Time.deltaTime); } ``` 需要注意的是,这些方法,使用了不同的更新函数。第一种方法使用了Update函数,第二种方法使用了FixedUpdate函数,第三种方法使用了Update函数。这是因为刚体的物理计算是在FixedUpdate函数进行的,所以如果需要在物理计算之前改变刚体的属性,应该使用FixedUpdate函数。而如果只是需要在每一帧更新物体的位置,可以使用Update函数。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值