2017-01-19 11 views
1

私はAccelerometerMovementという名前のスクリプトを持っています。このスクリプトは、プレーヤーの加速度計の制御を担当しています。プレイヤーはちょうど移動している私はちょうどInput.acceleration.xコンポーネントを取っている。次のように加速度計停止アニメーション移動クエリ

スクリプトは、次のとおり

public class AccelerometerMovement : MonoBehaviour { 
    private bool isandroid; 

    private float AccelerometerStoreValue; 

    private robotController theRobo; 

    // Use this for initialization 
    void Start() { 
     theRobo = FindObjectOfType<robotController>(); 


     #if UNITY_ANDROID 
     isandroid=true; 
     #else 
     isandroid=false; 
     #endif 
    } 

    // Update is called once per frame 
    void Update() { 
     if (isandroid) { 
      //android specific code 
      Accelerometer(); 


     } else { 
      //any other platform specific code 

     } 
    } 

    void Accelerometer(){ 
     AccelerometerStoreValue = Input.acceleration.x; 
     if (AccelerometerStoreValue > 0.1f) { 
      //right 
      theRobo.moveRight(); 

     } else if (AccelerometerStoreValue < -0.1f) { 
      //left 
      theRobo.moveLeft(); 

     } 
    } 
} 

uは左とright..itに従って上方に見ることができるように(moveLeft()moveRightを呼び出す)実際の別のスクリプトからプレーヤーのコントローラスクリプト。

実際の機能がある他のスクリプト:私は、実際のデバイス上のコントロールをチェックしたときに

// after Update() 
public void jump(){ 
     if (grounded) { 
      myRigidBody.velocity = new Vector2 (myRigidBody.velocity.x, jumpHeight); 
      doubleJump = false; 

     } 

     if(!doubleJump&&!grounded){ 

      myRigidBody.velocity = new Vector2 (myRigidBody.velocity.x, jumpHeight); 
      doubleJump = true; 
     } 
    } 

    public void moveLeft(){ 



     myRigidBody.velocity = new Vector2 (-moveSpeed, myRigidBody.velocity.y); 
     robotMove = true; 
     lastMove = myRigidBody.velocity.x; 
     anim.SetFloat ("MoveX", -moveSpeed); 
     anim.SetFloat ("LastMoveX", lastMove); 
     anim.SetBool ("RobotMoving", robotMove); 


    } 

    public void moveRight(){ 



     myRigidBody.velocity = new Vector2 (moveSpeed, myRigidBody.velocity.y); 
     robotMove = true; 
     lastMove = myRigidBody.velocity.x; 
     anim.SetFloat ("MoveX", moveSpeed); 
     anim.SetFloat ("LastMoveX", lastMove); 
     anim.SetBool ("RobotMoving", robotMove); 



    } 
    public void stop(){ 

     robotMove = false; 

     anim.SetBool ("RobotMoving", robotMove); 

    } 

は今、コントロールが正常に動作しているが、1つの問題があります!

問題は、プレイヤーが移動開始のアニメーションを移動を開始するときには、それはアイドルアニメーションを停止したとき(またはアニメーションを停止)を開始していないことと、まだプレーヤーの動きのアニメーションは行くを続けている場合もあります。

今、私はこの問題を解決する方法を理解できません。

+0

これはC#ではなくUnityscriptです。これをご理解ください。タグを正しく取得すれば、より多くの助けを得ることができます。あなたはGoogleのUnity C#対Unityscriptの違いを確認することができます。 – Programmer

+0

私はそれを変更しました!しかし、あなたは解決策@プログラマーを知っていますか? – utkdub

+0

実際にはコードを編集し、アイドルアニメーションを停止して再生するコードの部分を追加してください。 – Programmer

答えて

1

上記のStop()機能は休眠中です。

else if (AccelerometerStoreValue > 0.01f && AccelerometerStoreValue < 0.09f || AccelerometerStoreValue < -0.01f && AccelerometerStoreValue > -0.09f) { 
      theRobo.stop(); 
     } 

この値を設定すると、デバイスが引き続き処理され、アイドル状態のアニメーションが動作するように設定されます。上記のコードを2番目の直後に置くelseAccelerometer()にする。

関連する問題