unity3d - Unity 停止角色控制器跳上山
问题描述
大多数人可能都知道,统一的默认角色控制器设置允许您简单地跳上任何山/山,即使它超过坡度限制。当然,你不能走上去,但你仍然可以在前进的同时跳上去。
为了解决这个问题,我使用了另一个答案中的代码:
void OnControllerColliderHit(ControllerColliderHit hit)
{
float radian = cont.slopeLimit * Mathf.Deg2Rad;
if (hit.normal.y <= radian)
{
canJump = false;
} else
{
canJump = true;
}
}
在我的更新函数中,我只在 canJump 为真时才跳转(你可能已经猜到了)
所以它几乎可以按预期工作,当玩家接近超出坡度限制的坡度时(我认为至少,如果我的弧度计算是正确的,因为我真的不知道 hit.normal.y 是什么,如果那是是否与斜率限制相同,所以我猜想...如果有人可以纠正我,那会有所帮助。)
无论如何,首先我需要解决这个角色即使他背对着山也不能跳跃的事实,我不知道如何计算他是否面对陡峭的斜坡,只有当他与它相撞时,因此,如果有人可以提供帮助,那就太好了,并且(相关):
我也无法弄清楚如何阻止玩家从远处跳到这些陡峭的斜坡上并停留在上面,如果他跳上它们或最终落在上面,他应该简单地滑下山,直到他正常坡度,但我不知道如何让 CharacterContrller 滑下东西,尤其是在他到达常规坡度之前?
此外,这似乎也适用于角色有时上楼梯的情况(他不能跳的事实),但这是一个很大的禁忌,因为如果他们是合理的,他应该总是能够跳上楼梯足够小,但我不知道如何区分地形对象和楼梯......
如果有人至少可以回答这三个问题中的一个,那就太好了(但最好是所有问题,因为这都是同一个问题的一部分:如何让角色在 slpoes 和其他东西方面正常滑动/跳跃!(尽管那不是官方头衔)
解决方案
推荐阅读
- python - 如何在数据框中创建一个新列,这将是其他列和条件的函数,而无需使用 for 循环遍历行?
- javascript - 没有允许演示的 YouTube iframe
- python - 使用 open as 块定义的变量是否可用于外部块中的代码?
- android-studio - Android Studio 显示 SDK 已安装但未安装
- python - 为什么 itertools.zip_longest(*indexes_batch) 返回针对 itertools.zip_longest(indexes_batch) 的转置结果
- hybris - Hybris (1808) 如何通过克隆自定义插件
- nginx - 如果 URL 中不存在 Nginx 添加特定前缀
- mysql - SQL - 如何使用 WHERE 条件包含零结果的行
- java - 从 DTO 映射到实体时如何对密码进行编码?
- java - 将异常捕获到 Spring Job