【问题标题】:Preventing an object from landing on its side; ensuring it always lands face-up or face-down防止物体侧着落地;确保它始终面朝上或面朝下落地
【发布时间】:2017-01-27 15:08:04
【问题描述】:

目前我正在Unity中做一个抛壳项目。外壳在 Blender 中制作并在 Unity 中导入。我在外壳上附加了一个盒子对撞机。

现在,当我对外壳施加随机力以翻转它时,它有时会处于垂直向上的位置,而此时应该出现正面(面朝上)或反面(面朝下)的结果。

我尝试过改变轴,增加重力。但这些解决方案都没有奏效。

我现在所做的是当外壳在着陆后处于静止位置时,我将外壳旋转 90 度 - 但这不是一个很好的解决方案,因为它很慢并且需要时间来检查外壳是否有来休息与否。

我正在寻找更好的主意,以便外壳只能处于正面或反面状态。

【问题讨论】:

  • 你在 Unity 中使用物理吗?我想缩小对撞机会有所帮助。此外,当您在 Blender 中导出模型时,您可以指定轴的映射方式。
  • 是的,我正在使用物理。我已经制作了最小可能的对撞机。没有帮助。
  • 您能展示一下您遇到的意外行为的 GIF 吗?这可能有助于消除您的问题所在的一些不确定性。
  • drive.google.com/open?id=0B9QulIa45Z6hLTZURkw0OUN2YXc 在这张图片中,蓝色圆圈很好,但红色圆圈不好。 @Serlite
  • 有趣...呃,那些看起来更像是贝壳而不是硬币。不管怎样,你有什么样的对撞机?这就是他们碰巧最终着陆的方式,而您想阻止这种结果吗?

标签: unity3d game-physics


【解决方案1】:

如果你为你的炮弹使用盒子对撞机,你最终会遇到这种问题,即翻转的炮弹有时会侧向放置,而不是面朝上或面朝下。

在这种情况下,我建议使用Capsule Colliders,它是具有圆形顶部和底部的圆柱形对撞机。如果胶囊对撞机落在任一端,它会侧身倒下:

但是,一个胶囊对撞机是不够的 - 否则,外壳会在掉落后开始滚动。我建议使用 2 或 3 个,交叉排列,使它们的尖端与外壳的侧面相对应:

现在,如果炮弹落在它的任何一侧,它就会倒在十字架的一个面上——要么正面朝上,要么正面朝下。要将胶囊对撞机添加到您的游戏对象,只需单击添加组件,然后选择物理 > 胶囊对撞机。然后修改属性,使它们进入所需的位置:

您选择的方向可能应该是 X 轴和 Z 轴。获得正确方向后,更改 Center 值以将碰撞器移动到正确的位置以穿过外壳。然后,改变对撞机的半径以影响十字架的厚度和高度,使其尖端与外壳的边缘对齐。

希望这会有所帮助!如果您有任何问题,请告诉我。

【讨论】:

  • 它有效,非常感谢,但碰撞点很糟糕,即物体正在穿透墙壁,我想我不能并排添加盒子碰撞器。什么是好的解决方案?
  • 太棒了!真的很高兴我能帮上忙。
  • @SudeepAcharya 嗯,穿墙?您的对撞机是否与对象的边缘对齐以尽可能接近其形状?他们现在的安排是怎样的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-19
  • 1970-01-01
  • 1970-01-01
  • 2011-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多