我使用Unity3D,我有一个刚性的玩家。我在身体上加力以移动玩家。我的玩家走过一个地形,但能够走上陡峭的山峰。我想限制玩家,使其无法走上陡峭的斜坡。
我知道有一个具有此功能的CharacterController组件,但我必须使用刚体,所以我想要相同但是我的刚性。
我可以得到我所站立的三角形的法线,并计算它的角度,但我似乎无法让玩家停止向上移动斜坡。只让玩家停止移动(这使得玩家一旦遇到倾斜的斜坡就无法移动)
任何想法如何解决这个问题?
答案 0 :(得分:3)
如果没有关于如何使用物理引擎的详细信息,很难回答。你是如何/使用摩擦?你用什么角度施力?它总是水平的还是在地板的角度?玩家是否有质量?
无论如何,我可以想出几种方法来解决这个问题
走纯物理路线。使用玩家质量,摩擦力,力角,重力等。获取物理学来处理这些情况。这可能需要相当长的时间和编程。
保持僵硬的身体,但假装的力量。使用玩家所在的三角形角度缩放您应用于玩家身体的力。您可以使用三角函数来计算应该应用的内容或您自己的映射。通过您自己的映射,我的意思是设置一个角度,其中施加0力(比如说45度),并对所施加的力做一个线性(或非线性)比例,因此平坦地面力为1,而45力为0。
不要使用刚体。大多数游戏都不使用刚体来控制角色。这是艰难而复杂的,大部分时间都不值得花时间。当然我不知道你项目的细节,所以如果这不是一个选择,那很好。
希望能给你一些思考的东西。