正如大多数人可能知道的,unity中的默认角色控制器设置允许您简单地跳上任何山/山,即使它超过坡度限制。虽然你不能走上去,但你仍然可以在前进的同时跳上去。
为了解决这个问题,我使用了另一个答案中的代码:
void OnControllerColliderHit(ControllerColliderHit hit)
{
float radian = cont.slopeLimit * Mathf.Deg2Rad;
if (hit.normal.y <= radian)
{
canJump = false;
} else
{
canJump = true;
}
}
在我的update函数中,我只在canJump为真时跳转(你可能已经猜到了)
所以它几乎像预期的那样工作,当玩家接近超过坡度限制的斜坡时(我想至少,如果我的弧度计算是正确的,因为我并没有得到真正的命中率。正常。y是,如果这与坡度限制相同与否,所以我猜。。。如果有人能纠正我的话,那会有帮助的。)
我也不知道如何阻止玩家从远处跳到陡峭的山坡上,然后呆在上面,如果他跳到了山坡上或者最后掉到了山坡上,他应该直接滑下山,直到他在一个规则的斜坡上,但是我不知道如何让角色控制者滑下东西,尤其是在他到达一个正常的斜坡之前?
另外,这似乎也适用于(他不能跳的事实)角色有时走上楼梯,但这是一个很大的不-不-不,因为他应该总是能够跳上楼梯,如果他们足够小,但我不知道如何区分地形对象和楼梯。。。
如果有人至少能回答这三个问题中的一个,那就太好了(但最好是所有问题,因为这都是同一个问题的一部分:如何让普通角色在slpoe之类的东西上滑动/跳跃(尽管这不是官方标题)