我正在使用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;
}
}
答案 0 :(得分:2)
@SgtOddball我有一个类似的问题。我相信1f打击了您的播放器。
添加一个layermask
以排除您的播放器,由于我认为它太小,请暂时设置1f Mathf.Infinity
,然后使用
Debug.DrawRay(transform.position, -transform.up * 1f, Color.RED)
看看1f到底有多长。我不相信。