在碰撞器中获得精细细节?

时间:2016-03-23 16:40:12

标签: unity3d

我正在进行2D物理游戏,该游戏涉及目前使用复杂多边形碰撞器的物体之间的碰撞。

当物体发生碰撞时,我使用otherObject.contacts [0] .normal获得接触点的法线,并使用Rigidbody2D.AddForceAtPosition将物体分开,并以相等但相反的方向分开,力是正常的倍增一个常数。

大多数情况下,这种方式完美无缺,但我发现当碰撞发生在多边形对撞机中的凹面(又称:向内"倾斜")时,正常情况将是翻转,对象将被推向对方。

或者,还有其他方法可以解决这个问题吗?

enter image description here

蓝色圆圈区域是一个有问题的凹面部分的例子

1 个答案:

答案 0 :(得分:1)

  

或者,还有其他方法可以解决这个问题吗?

是的,视频游戏的标准之处在于,大多数东西都有许多小型简单碰撞器,而不是一个大型复杂碰撞器。

这是游戏工程的基础。

(对业余爱好者和新手来说,这可能会非常令人惊讶。)

所以,想象一下任何普通3D游戏中的汽车。你有一个后保险杠的对撞机,一个用于前面,一个用于“左门”,等等。通常情况下,每个人都必须以不同的方式做出反应,并且您需要知道触摸了哪个区域。

在你的情况下,如果2D多边形有12条边,那么只需要12“小”,因为它是每条边的碰撞器。

我们对您的设置一无所知,因为没有屏幕截图,但这可能会有效。

但是请注意,Unity的2D多对撞机实际上已经知道将对象切割成更小的三角形形状如果它是凹的 - 我已经知道了它为你工作了。

此外:现在我们可以看到你的形象了。

在地球上的任何视频游戏中,你做头盔的方式是使用方形对撞机,如橙色:

enter image description here

如果(出于某种原因......为什么?为了什么目的?怎么样?在哪里?可能的原因是什么?)你在一个全新的飞机上制造最精确的人类创造的视频游戏对于一些假想的具有量子空间核心核心的新硬件,......在这种情况下...你可能会添加两个额外的碰撞器以覆盖角。但没有人会注意到这种差异。

我感谢你可能正在做一些非常不寻常的事情,比如“近距离游戏”(“你是中世纪斯堪的纳维亚半岛的原子,弹跳头盔”或其他什么),在这种情况下还有其他一些解决方案。

非常简短的回答是你偶然发现了一个关于游戏技术的最令人惊讶的事情...... 我们使用蹩脚,简单的对手,你在你玩的每个游戏中都被欺骗了!