有没有大佬做过弹道反弹的,子弹容易卡在墙壁里,求破?

本人做了一个弹道反弹的效果,即子弹射中障碍物时根据入射向量(startPoint.sub(endPoint))和碰撞发生点(contact.getWorldManifold().normal)的向量计算出反射向量,然后在碰撞检测中给子弹的rigibody添加一个反射方向的力,基本思路如上,但是遇到了以下2个问题:

1、我给子弹添加了rigibody的时候,type已经设置成了kinecmatic,然而子弹击中物体后还是会自动受到一个引擎物理系统反弹的效果,即我在碰撞检测中做的逻辑(计算反射向量)全是无用功,不知道怎么取消这个反弹效果?
PS:效果其实是可以的,之前没有做过这一套,全靠物理系统反弹吗?

2、子弹在不断的碰撞过程中,有时会发生子弹卡在某个角落不动的问题,目前也还不知道是什么原因?不知道是不是和第1点自动收到的物理系统有关

以上2个问题,不知道有没有了解的大佬可以解惑一下,谢谢!

1赞

自己计算角度的话就别设弹性系数了:

子弹卡在某点,是不是自己指定位置了,使用物理引擎要用力,向量,或设置速度来使物体运动

反弹效果完全用物理系统反弹就可以了,不用单独再计算反射向量,这个是无用功。如果非要按照自己的方式来计算反射向量的话,屏蔽物理系统的话,直接用碰撞系统就可以了,或者刚体设置为static,屏蔽重力、弹性系数等。
卡在某个角落的话,应该是碰撞的时候你改变了节点的位置,导致他的位置与物理系统的反弹效果冲突。

现在我的角度是自己计算的,反弹效果正常,但是卡的位置都是一些边边角角的地方, 我写了个test让若干个子弹一起运行,结果过了一段时间后(尽管正式项目中子弹不需要运行这么长的时间),全卡在了边角的地方,例如屏幕的4个角落,或者2个碰撞体之间的交界处,现在还没排查出是什么问题呢

我的反弹还不是桌球,弹力球那类的反弹呢, 主要是一款射击内容的游戏,可以显示辅助线反弹射击那种, 用物理系统那一套的话,感觉不可控的因素比较多

你可以打开物理调试截个图看看

子弹发射是用什么方法? 用moveBy不行啊? 请教一下大佬,谢谢

不行啊,要用物理引擎里面的API去发射

物理引擎有这个?

大哥解决了嘛?我也会卡边缘