,默认的字符控制器设置可以使您简单地跳上任何山/丘,即使其超过了坡度限制。当然,您不能走路,但在前进时仍可以跳起来。
为解决此问题,我使用了另一个答案中的代码:
void OnControllerColliderHit(ControllerColliderHit hit)
{
float radian = cont.slopeLimit * Mathf.Deg2Rad;
if (hit.normal.y <= radian)
{
canJump = false;
} else
{
canJump = true;
}
}
并且在我的更新函数中,仅当canJump为true时(您可能已经猜到了),我才会跳转
因此,当玩家接近超出坡度限制的坡度时,它几乎可以按预期工作(至少我认为,如果我的弧度计算正确,“因为我并没有真正受到打击。normal.y是,如果这与坡度极限是否相同,那么我有点猜测...如果有人可以对此进行校正,那将会有所帮助。)
无论如何,首先,我需要修正一个事实,即即使角色从山上对开,角色也不会跳动,我不知道如何计算他是否正对着陡峭的斜坡,只有当他与它发生冲突,因此,如果有人可以提供帮助,那将是一件好事,而且(相关):
我也不知道如何阻止玩家从远处的陡峭山坡上跳下来并停留在上面,但是如果他跳上山峰或最终落在山坡上,他应该简单地滑下山直到他在规则的坡度上,但我不知道要让CharacterContrller滑下来,尤其是不仅要等到他到达规则的坡度为止?
这似乎也适用于角色有时要爬楼梯的事实(他不能跳的事实),但这是一个很大的禁忌,因为如果他/她应该总是可以跳楼梯足够小,但我不知道如何区分地形对象和楼梯...
如果任何人至少可以回答这三个问题之一,那就太好了(但最好是全部,因为这都是同一个问题的一部分:如何使角色正常地滑动/跳跃有关滑倒物和东西!(即使这不是官方名称)