首页 > 解决方案 > 如何使物体粘在斜坡上,而不是使用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");
        }
    }
}

这在控制台中给了我一个接地的消息,但我不知道如何实际实现约束。

所以,是的,我希望有人可以在这里帮助我,如果格式不好,我很抱歉,如果我遗漏了一些明显的东西。

标签: c#unity3dnormals

解决方案


推荐阅读