2017-02-02 19 views
2

我目前正在Unity中作为Unity和C#初学者的2D游戏。Unity3D C#方向变化,而运行不起作用

我的角色应该与水平轴左右走,这完美的作品。但是现在我想要的是,当我另外按下“Fire1”时,我的角色就​​会运行。这部分工作,但当我按下“Fire1”时改变方向,角色停止。没有按下“Fire1”,方向改变就起作用。看起来脚本没有得到水平变化,因为debug.log在方向改变时按下“Fire1”时显示“0”。

if (onPlatform) { 
    activeMoveSpeed = moveSpeed * onPlatformSpeedModifier; 
} else if(Input.GetButton("Fire1")) { 
    activeMoveSpeed = moveSpeed * sprintSpeedModifier; 
} else { 
    activeMoveSpeed = moveSpeed; 
} 

Debug.Log (Input.GetAxisRaw ("Horizontal")); 

//Player go left and right 
if (Input.GetAxisRaw ("Horizontal") > 0f) { 
    myRigidbody.velocity = new Vector3 (activeMoveSpeed, myRigidbody.velocity.y, 0f); 
    transform.localScale = new Vector3 (1f, 1f, 1f); 
} else if (Input.GetAxisRaw ("Horizontal") < 0f) { 
    myRigidbody.velocity = new Vector3 (-activeMoveSpeed, myRigidbody.velocity.y, 0f); 
transform.localScale = new Vector3 (-1f, 1f, 1f); 
} else { 
    myRigidbody.velocity = new Vector3(0f, myRigidbody.velocity.y, 0f); 
} 
+0

玩家可以在平台上同时跳跃吗? – MistaGoustan

+0

@MistaGoustan是的,它的工作原理 – Christoph

回答

0

您可以尝试将每个moveSpeed乘以Time.deltaTime。我遇到了一个与此类似的问题,并且有所帮助。