在物理系统中,如何实现物体匀速运动

想实现一个物理匀速运动,水平或者垂直方向的运动。当碰到其它刚体,会产生跟Dynamic一样的效果。现在有一个问题,使用Dynamic,重力设为0,可以实现匀速运动。但是与其它的物体碰撞之后,不会产生重力的效果。设置为Kinematic,可以实现匀速,但不会有Dynamic的效果。求教下,这样子的效果该怎么实现

给物体一个冲量

请问是给一个向上的力吗?

这个方法有试过,但是这个力貌似是一次性的。有试过给直接给物体一个远大于重力的力。一个向上的力让物体直接向上飞,但是只飞了一会就又往下掉了,无法跟重力保持平衡

moveTo

你是想用碰撞但是不想要用重力?

碰撞之前保持匀速直线运动,碰撞之后会有类似于受到重力往下掉的效果

不能动态设置重力?

我的建议是 首先吧物体的刚体设置为静态,然后用move移动,当碰撞以后,再将物体设置为动态的。

试一下这个

我一开始以为他不用重力就建议他用moveTo

最近在做一个类似的游戏,Force-Escape。
我的做法是:

先设置物体的初速度且物体重力为0,监听碰撞事件,碰撞后设置该物体重力为1。

这方法也试过了,但是多个物体叠加起来的时候这个方法就不管用了

多个物体叠加在一起移动就不管用了

怎么叠加?多个物体在一块的话可以加上我上述的代码:
可忽略接触但不碰撞的事件

if (contact.getImpulse().normalImpulses[0] > 0){
// todo
}else{
contact.disabledOnce = true;
}

不管用,力也还是暂时的。飞了一下就又往下掉了

我说的叠加是指物体类似搭积木摆在一块。还有,刚才试了下contact.getImpulse() 这个值返回null啊

那就用这个方法就行了。

你报错的话就检查下是不是监听的onPostSolve,按照我的代码来应该没问题的

谢谢了,问题解决了