我正在制作一款2.5D平台游戏,但我无法正确调整播放器。我只是希望它在X轴上旋转,同时玩家向左和向右移动。我的动作脚本是:
if (isWalking)
{
transform.Rotate(0, facingDir, 0);
isWalking = false;
}
else { }
if (Input.GetKey(KeyCode.Space))
GetComponent<Rigidbody>().velocity = new Vector2(GetComponent<Rigidbody>().velocity.x, jumpHeight);
if (Input.GetKey(KeyCode.A)){
GetComponent<Rigidbody>().velocity = new Vector2(-speedHeight, GetComponent<Rigidbody>().velocity.y);
facingDir = 180;
isWalking = true;
}
if (Input.GetKey(KeyCode.D))
{
GetComponent<Rigidbody>().velocity = new Vector2(speedHeight, GetComponent<Rigidbody>().velocity.y);
facingDir = 0 ;
isWalking = true;
}
我可以旋转它的最好方法是通过transform.rotate(0,180,0)和(0,0,0),但是它会不停地旋转,我怎么知道玩家在X上的移动方向-axis所以我可以正确转换。旋转?
答案 0 :(得分:1)
transform.forward
这应该为您提供玩家移动的方向。您可以使用
transform.LookAt(target);
将玩家定向在特定方向。主要问题是您正在尝试更新GetKey函数中的方向,该方向在按住键时返回true。这会导致角色不断旋转,您可以通过使用额外的检查来避免这种情况。您可以通过以下方式使用Lookat:
GetComponent<Rigidbody>().velocity = new Vector2(-speedHeight, GetComponent<Rigidbody>().velocity.y);
transform.LookAt(transform.position+new Vector3(GetComponent<Rigidbody>().velocity.x,0,GetComponent<Rigidbody>().velocity.y));
有更好的方法可以解决这个问题。