【问题标题】:Avoid the character jumping because of capsule collider避免角色因胶囊对撞机而跳跃
【发布时间】:2020-04-23 11:52:11
【问题描述】:

我的统一游戏中有一个带有胶囊对撞机的角色。当角色在胶囊的球形部分撞击另一个对撞机时,角色就会被发送到空中。如何避免?

Here is a video to explain the problem

我已经有了一些解决方案,但并没有真正奏效:

  • 使用圆柱对撞机代替胶囊,但它不存在。我尝试用meshcollider 制作一个,结果不如胶囊对撞机,因为meshcollider 不是完美的圆形。我也尝试用许多 rect collider 制作一个,但它会产生与 meshcollider 相同的问题。

  • 当角色在地上的时候设置一个非常大的重力,但是问题是我在游戏中有斜面,所以也不管用。

感谢您的帮助

【问题讨论】:

  • 是的,我觉得你在这个。
  • 你有什么想法我应该试试吗?
  • 并非如此。我将胶囊对撞机进一步向上移动,并在脚上添加了额外的胶囊对撞机。似乎好一点。如果您使用刚体移动,总会有 CharacterController 或其他脚本。
  • 你是如何移动你的角色的?刚体?如果是这样,使用速度、MovePosition 还是什么?请分享您的代码和字符设置,以便我们提供帮助。
  • 它不需要代码,因为这是统一的预期行为。我只是在寻找解决这个问题的建议或想法,更准确地说是为了克服统一没有对撞机圆柱体的事实。

标签: c# unity3d collision-detection


【解决方案1】:

我可能不对,但我认为您应该删除胶囊对撞机并添加一个网格对撞机,或者您也可以只在播放器的每个部分添加对撞机,这将花费更长的时间,但我认为这就是您所需要的。所以在头部添加球体对撞机,在手臂上添加盒子对撞机等等。

【讨论】:

    【解决方案2】:

    您可以适当地修复不需要的行为:

    • 为您的对撞机使用不同的物理材料。消除弹性可能会有所帮助。
    • 通过调整对象的比例。
    • 通过将地面对撞机从具有锐利边缘的箱形对撞机更改为边缘具有斜坡的网格对撞机。
    • 添加一个代码,让你的角色落地。

    我可以推荐一下 Catlike Coding 中关于角色移动的精彩教程:A series about controlling the movement of a character.

    【讨论】:

      猜你喜欢
      • 2017-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-17
      • 1970-01-01
      相关资源
      最近更新 更多