cocos creator利用力或冲量来改变刚体位置

移动一个物体有两种方式:

  1. 可以施加一个力或者冲量到这个物体上。力会随着时间慢慢修改物体的速度,而冲量会立即修改物体的速度。可使用以下方法
// 施加一个力到刚体上指定的点,这个点是世界坐标系下的一个点
rigidbody.applyForce(force, point);

// 或者直接施加力到刚体的质心上
rigidbody.applyForceToCenter(force);

// 施加一个冲量到刚体上指定的点,这个点是世界坐标系下的一个点
rigidbody.applyLinearImpulse(impulse, point);

以下为applyLinearImpulse方法的的impulse参数解释

image.png

以下为applyForce方法的的force参数解释

image.png

  1. 直接修改物体的位置,只是这看起来不像真实的物理,你应该尽量去使用力或者冲量来移动刚体,这会减少可能带来的奇怪问题。

了解以上方法后,需要获取到刚体在世界坐标系下的一个点来进行对应的力,
获取刚体对应的点的世界坐标

本地坐标系也叫节点坐标系,世界坐标系是相对于整体而言的,而本地坐标系是相对于父节点而言的

rigidbody = this.getComponent(RigidBody2D)
let wp = new Vec2()
// 获取目标本地坐标系下的世界坐标值,第一个参数v2(0, 0)表示刚体本地坐标,wp为对应的世界坐标
this.rigidbody.getWorldPoint(v2(0, 0), wp)
// 也可用以下方法直接获取刚体质心的世界坐标
// this.rigidbody.getWorldCenter(wp)

获取节点对应的世界坐标点后,再执行对应的力或冲量,让我们来对刚体进行一个垂直向上的力,来实现角色跳跃的功能,因为角色本身具有横行移动速度,所以force向量的x轴的力我们设置为0,只需要一个y轴垂直向上的力即可。在x = 0的情况下,只要y > 0即为90度垂直向上的力

// 施加一个力到刚体上指定的点,这个点是世界坐标系下的一个点,force为力的向量,v2(0, this.jumpHeight)这个设置表示垂直向上的冲力
let force = v2(0, 100)
rigidbody.applyForce(force, wp, false)

// 施加一个冲量到刚体上指定的点,这个点是世界坐标系下的一个点
// rigidbody.applyLinearImpulse(force, wp, false)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容