使用Physics.Raycast检查接地是否存在问题

时间:2018-10-03 12:00:09

标签: unity3d

我正在使用Unity 2018制作多人FPS,并且试图通过射线广播检测是否接地,以查看玩家是否可以跳跃。

我编写了一个应该基于多个指南工作的函数,但是无论播放器是否实际接地,它都会返回看似随机的值。

我的功能:

bool IsGrounded()
{
    RaycastHit hit;

    if (Physics.Raycast(transform.position, -transform.up, out hit, 1f))
    {
        Debug.Log("Hit");
        return true;
    }
    else
    {
        Debug.Log("Miss");
        return false;
    }
}

1 个答案:

答案 0 :(得分:2)

@SgtOddball我有一个类似的问题。我相信1f打击了您的播放器。 添加一个layermask以排除您的播放器,由于我认为它太小,请暂时设置1f Mathf.Infinity,然后使用

Debug.DrawRay(transform.position, -transform.up * 1f, Color.RED)

看看1f到底有多长。我不相信。