Unity3d 限制球员移动的坡度

Unity3d 限制球员移动的坡度,unity3d,rigid-bodies,Unity3d,Rigid Bodies,我使用Unity3D,我有一个带刚体的播放器。我在身体上增加力量来移动球员。我的玩家可以在地形上行走,但可以爬上陡峭的山峰。我想限制球员,使其不能在陡峭的斜坡上行走 我知道有一个CharacterController组件具有此功能,但我必须使用刚体,所以我希望在我的刚体上使用相同的功能 我可以得到我所站的三角形的法线,并计算它的角度,但我似乎不能让玩家停止向上移动。仅使玩家停止移动(这会使玩家在碰到有角度的斜坡时无法移动) 有什么办法解决这个问题吗?如果没有关于如何使用物理引擎的更多细节,很难回

我使用Unity3D,我有一个带刚体的播放器。我在身体上增加力量来移动球员。我的玩家可以在地形上行走,但可以爬上陡峭的山峰。我想限制球员,使其不能在陡峭的斜坡上行走

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

我可以得到我所站的三角形的法线,并计算它的角度,但我似乎不能让玩家停止向上移动。仅使玩家停止移动(这会使玩家在碰到有角度的斜坡时无法移动)


有什么办法解决这个问题吗?

如果没有关于如何使用物理引擎的更多细节,很难回答。你是如何使用摩擦力的?你用什么角度施力?它总是水平的还是与地板成一定角度的?运动员有弥撒吗

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

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

  • 保持刚体,但要模拟力。用玩家所在三角形的角度缩放你施加在玩家身上的力。您可以使用三角学计算出应该应用什么,也可以使用自己的映射。通过你自己的映射,我的意思是设置一个角度,在0处施加力(比如45度),并对施加的力进行线性(或非线性)缩放,因此在平坦地面上,力为1,在45度时,力为0

  • 不要使用刚体。大多数游戏不使用刚体来控制角色是有原因的。这很难,也很复杂,大部分时间都不值得花那么多时间。当然,我不知道你的项目的细节,所以如果这不是一个选项,很好


  • 希望这能给你一些思考的东西。

    一个简单而天真的方法是存储你的最后位置。当玩家进入坡度大于阈值的三角形时,禁用玩家控制并返回到最后位置,然后重新启用控制。这是一个快节奏的游戏,所以我并不想禁用玩家控制,即使只是几毫秒。然后你不能走下斜坡,因为你会被送回山顶。谢谢,这肯定会让我思考一些事情。已经有一些代码在工作,但仍然相当紧张。但我被调到了另一个任务,所以这个任务暂时搁置。谢谢你的见解!