2017-08-24 45 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函數。你正在創建一個vector2而不是像你在上下功能中那樣的vector3。根據Unity Scripting APItransform.position需要vector3的位置,而不是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); 
    }