大佬们来看下这个物理碰撞呢?我懵逼了

如下图,左边绿色块是我开启的一个RigidBodyType = static的一个 PhysicsBoxCollider。然后一个RigidBodyType = animated的PhysicsBoxCollider从箭头方向撞过来
截屏2021-07-22 下午3.53.09

结果我得到的法向量为啥是[-1,0]?不应该是[1,0] 吗?


截屏2021-07-22 下午3.53.55

看样子大佬们都没空么。。。?还是我这问题太简单了,大佬们不屑于回答 :sob:
再补充个图,这个方向撞过来,为啥法向量右下?这里不应该是垂直向上吗?
截屏2021-07-22 下午5.26.14
截屏2021-07-22 下午5.28.37

1赞

:sob:大佬们有空了没有?求求了,别沉啊

https://www.136.la/shida/show-147557.html

感谢大佬,但是不仅仅是相反的问题,有时候取出来法向量跟碰撞的平面平行,有时候就是瞎给的法向量,断点调试发现在触发碰撞回调的时候manifold.pointCount为0,然后并没有去做碰撞的计算,直接return了。目前我只能做特殊处理,判断碰撞的对象为墙壁时写死对应的法向量,相当于这里ccc自带的box2d完全没得卵用。。。我觉得应该是我哪里写的不符合ccc设定的规范才发生这个问题,但是就是没有方向,不知道该往哪找

如果只是边界墙这个需求的话,我觉得完全不必要用碰撞啊,效率又不高,直接算边界,数学运算不香么

emm…这里不是特例啊,并不是移动不出边界这个规则,而是移动碰到障碍物要做反弹。。。边界只是障碍的一种

这个也可以用数学运算呀,先算出移动目标位置,判断如果超出墙则限制位置为墙的位置,然后下一帧算出反弹方向,朝着相反的方向移动,然后再判断是否超出墙体,循环处理

所以咱们就是承认了ccc的物理引擎是渣渣完全用不了么。。。。?

感觉不科学, 没有接触点怎么触发和解决碰撞的.
是各个阶段的回调函数里都是这样吗?

这就不知道了,其他刚体碰撞因为没有明显问题所以没有调试过,就这个怪物的刚体因为需要根据碰撞的法向量做反弹,然后给的法向量是错的所以会弹出屏幕太明显了

这么小的功能需求为啥用那么重的功能呢,包体不考虑吗

几十个怪物spine动画,设计尺寸1920x1080,肯定不会在乎这点包体啊。。。关键不能因为照顾包体而本身能用的功能都改的不能用了吧?

onBeginContact
onEndContact
onPreSolve
onPostSolve
各个阶段的回调里都没有碰撞法线吗?

不知道,我只使用了onBeginContact