2015-06-27 114 views
0

我正在制作2.5D plataform游戏,但无法正确旋转玩家。我只是希望它在X轴上旋转,而玩家向左和向右移动。我的动作脚本是这样的:在2D场景中旋转3D对象

 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轴上的移动方向,以便我可以正确旋转。

回答

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)); 

有更好的方法来做到这一点,但这应该可以解决您的问题。