我正在制作一款跑酷游戏,遇到了一个问题。游戏中有一个墙跑机制,如果你在墙上跑,你的玩家旋转方向会被锁定在墙的平面上。只要你撞到墙的左侧(西侧),这个机制就能完美运行。但如果撞到墙的右侧(东侧),玩家就会被翻转到错误的方向。
private void WallStick()
{
if (leftWall) wallNormal = leftWallHit.normal.y;
else if (rightWall) wallNormal = rightWallHit.normal.y;
if (leftWall) playerMovement.rotationScript.yRotation = wallNormal + 90f;
else if (rightWall) playerMovement.rotationScript.yRotation = wallNormal - 90f;
}
leftWall 和 rightWall 是布尔值,用于指示玩家朝向墙壁的方向。命中是射线投射。其他所有内容似乎都一目了然,如有疑问,请提出。这段代码完美地运行,但前提是玩家在墙的西侧奔跑。
我可以将每面墙分成两块,并分配一个 layerMask 来区分光线投射击中哪一侧,但这看起来非常笨重,而且会让我重新设计整个世界。
有什么想法吗?