c# - 如何使物体粘在斜坡上,而不是使用unity3d走上太陡的斜坡?
问题描述
我正在帮助一个角色控制器,但我们在向它引入斜坡时遇到了问题。当玩家在斜坡上移动过快时,他将不断失去与斜坡的连接,因为重力不足以让他保持接地。但增加它不是一种选择。我们遇到的另一个问题是定义他可以攀爬的斜坡的限制。
使用 Rigidbody.MovePosition 移动玩家。我正在寻找的确切行为是:角色可以攀爬的陡峭程度的硬阈值,一种始终使玩家保持在地面上的力量,除非他从边缘掉下来。
我什至不知道从哪里开始做这个。我四处搜索,发现有些人使用光线投射并将播放器向下移动 hit.distance,但我无法让它工作。
我开始处理另一个问题,但很快也陷入困境:我从玩家碰撞的所有点中获取法线OnCollisionStay
:
void OnCollisionStay(Collision collisionInfo)
{
foreach (ContactPoint contact in collisionInfo.contacts)
{
if(contact.normal.y > 0.9f && contact.normal.y < 1.1f)
{
Debug.Log("grounded");
}
}
}
这在控制台中给了我一个接地的消息,但我不知道如何实际实现约束。
所以,是的,我希望有人可以在这里帮助我,如果格式不好,我很抱歉,如果我遗漏了一些明显的东西。
解决方案
推荐阅读
- javascript - Firebase 查询(多值)
- java - Protocol Buffer 首次使用高延迟
- ionic-framework - ERROR TypeError: Object(...) is not a function at WebIntent.get [as ACTION_VIEW]
- laravel - 如果不为空,则与关系
- javascript - Angular over https:websocket请求不起作用
- python - 为什么检查任何元素是否存在匹配条件时 any() 比 yield 慢
- flutter - 我的颤振项目没有连接到火力基地
- spring-websocket - 使用 Spring Websocket STOMP 时无法获得任何响应或错误
- javascript - 在 jquery 中切换和切换多个类
- api - 使用 JMeter 的 Rest API 中的动态值