1

我使用 Unity3D,我有一个刚体的玩家。我向身体添加力量来移动玩家。我的玩家走过地形,但能够爬上陡峭的山峰。我想限制玩家,使其无法走上陡峭的斜坡。

我知道有一个 CharacterController 组件具有此功能,但我必须使用刚体,所以我想要相同的,但在我的刚体上。

我可以得到我站立的三角形的法线,并计算它的角度,但我似乎无法让玩家停止向上斜坡移动。只让玩家停止移动(这使得玩家一旦碰到倾斜的斜坡就无法移动)

任何想法如何解决这个问题?

4

1 回答 1

3

如果没有更多关于如何使用物理引擎的详细信息,很难回答。你如何/正在使用摩擦力?你用什么角度施力?它总是水平的还是与地板成角度的?玩家有质量吗?

无论如何,我可以想出一些方法来解决这个问题

  1. 走纯物理路线。使用玩家质量、摩擦力、力角、重力等。让物理为您处理这些情况。这可能需要相当多的时间和编程。

  2. 保持刚体但假力。使用玩家所在的三角形的角度来缩放施加到玩家身体上的力。您可以使用三角函数来计算您应该应用的内容,也可以使用您自己的映射。通过您自己的映射,我的意思是设置一个施加 0 力的角度(例如 45 度),并对施加的力进行线性(或非线性)比例尺,因此平坦地面力为 1,45 度力为 0。

  3. 不要使用刚体。大多数游戏不使用刚体来控制角色是有原因的。这既困难又复杂,而且大多数时候不值得花时间。当然,我不知道您项目的详细信息,所以如果这不是一个选项,那很好。

希望这能让你思考一些事情。

于 2012-10-12T11:32:21.773 回答