Unity 3D物体带有刚体滑动功能。

3

我有一个拥有附加Rigidbody的立方体,每当我按下播放按钮时它会稍微滑动。如果我把它放置一段时间,它会滑到屏幕的另一侧。

有人知道如何解决这个问题而不使用“冻结位置”吗?我不知道在我的项目中弄错了什么...

这就是对象的样子: image

注意:我需要使用重力。

谢谢!

3个回答

5

嘿!这里的解决方案是:

你的刚体在地面上 :)

千万不要这样做 :)


如果“floor”表面是平的,那么它不会滑动

你遇到了一些奇怪的问题,比如:

  • “floor”不是平的

  • 可能打开了像“风”这样的特征

  • 也许场景中的其他对象被忽略了

PhysX没有“自己的想法”。它移动的原因是简单的。


假设“floor”确实有一个角度,所以它应该移动,但是你想让它不移动

显然你需要做:

就像在现实世界中一样,在那里放置一些东西来阻止它移动

一个小的看不见的墙就可以达到目的。 这就是 PhysX!


地板位置为X0,Y1,Z0,旋转角度为X0,Y0,Z0。但是当我尝试倾斜地板,将其Z轴旋转从0变为3时,立方体会朝上坡移动(正X,正Z),但速度较慢... 当我将旋转Z改为4时,立方体会向正Z方向移动... - Wilson Sim
完成 ;) 感谢您的帮助! - Wilson Sim

2
通常刚体滑动发生在下方刚体的质量低于上方刚体的情况下(迫使下方刚体向下)。典型问题是玩家质量为80,在质量为1的方块上跳跃。在这种情况下,碰撞非常激烈,方块可能会飞出去(不仅仅是滑动)。
这种情况与现实世界非常相似。如果你有120公斤(好吧,好吧,80公斤 :)),请尝试站在一盒牛奶上。
当您尝试消除此行为时,需要增加下方物体的质量或减少上方物体的质量,或将下方刚体设置为运动学。

0
上面的解决方案并不是解决问题的正确方式。Unity比mass拥有更多的物理特性。如果您因为运动或其他物体而滑动,应该在刚体上添加适当的阻力值。例如,假设您有方块生成在其他方块的顶部,并且这会导致水平滑动。在我的情况下,我将质量约为1公斤的对象的阻力设置为1。这取决于场景,您应该在您的情况下尝试不同的值。如果不重要,请勿使用较大的值和角阻力。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接