2017-08-24 6 views
1

私は3x3 gameBoardを持っています。キャラクターは真ん中から始まります。私が右を押すと何も起こりません。左を押すと何も起こりませんが、押し上げるとコード内の位置に移動します。更新画面は一度しか動作せず、その後動作を停止します。 UNITY

void Start() 
{ 
    transform.position = new Vector2(0.28f, -0.27f); 
    print(transform.position.x); 
} 

void Update() 
{ 
    if (ChrP == new Vector2(0.28f, -0.27f)) 
    { 
     if (Mathf.Abs(Input.GetAxisRaw("Right")) > 0.0f) 
     { 
      transform.position = new Vector2(1.95f, -0.27f); 
     } 
     if (Mathf.Abs(Input.GetAxisRaw("Left")) > 0.0f) 
     { 
      transform.position = new Vector2(-1.36f, -0.27f); 
     } 
     if (Mathf.Abs(Input.GetAxisRaw("Down")) > 0.0f) 
     { 
      transform.position = new Vector3(0.28f, -1.923f); 
     } 
     if (Mathf.Abs(Input.GetAxisRaw("Up")) > 0.0f) 
     { 
      transform.position = new Vector3(0.28f, 1.401f); 
     } 
     else 
     { 
     } 
    } 
} 

ので、新しい「アップ」位置のために私は、コードの同じ種類を持っていると私はすべてをチェックしているが、それはだけではなく、移動のフリーズ。 私はボタンを押した場合、すべてのフレームをチェックする予定です。たぶん私は何かを見逃している。 また、if文の前後の両方に、私は同じタイプのコードを持っていますが、他の座標はあります!

+1

私はあなたがコードをデバッグする方法をお勧めします、これは簡単に発見されるものですか?しかし、 'ChrP'値が非常に特定の位置にある場合、あなたの' Update'メソッドは何も実行しません。 – DavidG

+0

@MichelAtwood DavidGは正になぜ最初のif文を持っていますか? –

+0

最初のif文がオブジェクトのある場所でチェックされています –

答えて

0

左右のコードのtransform.position機能を確認してください。あなたはアップとダウンの機能のようにvector3の代わりにvector2を作成しています。 Unity Scripting APIによれば、transform.positionvector3であり、vector2ではありません。修正は簡単です:

if (Mathf.Abs(Input.GetAxisRaw("Right")) > 0.0f) 
    { 
     transform.position = new Vector3(1.95f, -0.27f); 
    } 
if (Mathf.Abs(Input.GetAxisRaw("Left")) > 0.0f) 
    { 
     transform.position = new Vector3(-1.36f, -0.27f); 
    } 
関連する問題