我想为一个学校项目制作一个3D平台。由于我在游戏开发方面没有那么丰富的经验,我遵循了普莱的教程。我最大的问题是我不停地滑下斜坡和斜坡检测。只有当斜坡下面有一个表面时,它才会检测到斜坡,玩家离地面有一段距离,但离地面不太远。
这是显示的用于检测坡度的方法。尝试编辑它,但似乎什么都不起作用。
if (Physics.Raycast(transform.position, Vector3.down, out slopeHit, playerHeight / 2 * 5f))
{
if (slopeHit.normal != Vector3.up) return true;
}
Color rayColor;
if (slopeHit.collider != null) rayColor = Color.green;
else rayColor = Color.red;
Debug.DrawRay(transform.position, Vector3.down, rayColor);
return slopeHit.collider != null;
第一部分中的井
if (Physics.Raycast(transform.position, Vector3.down, out slopeHit, playerHeight / 2 * 5f))
{
if (slopeHit.normal != Vector3.up) return true;
}
如果你撞到了什么东西,并且它是一个斜坡,那么你已经return
了。
否则,即使你可能根本不会命中任何东西,你也要执行剩下的。
你可能更愿意做例如
if (Physics.Raycast(transform.position, Vector3.down, out var slopeHit, playerHeight / 2f * 5f))
{
var isSlope = slopeHit.normal != Vector3.up;
Debug.DrawLine(transform.position, slopeHit.point, isSlope ? Color.yellow : Color.green);
return isSlope;
}
//meaning you don't hit anything at all
Debug.DrawRay(transform.position, Vector3.down, Color.red);
return false;