2014-03-27 68 views
0

我想讓精靈充當按鈕,所以當按下精靈時,它會執行一個動作。這是我的代碼這是比較觸摸座標與精靈的正確方法嗎?

 if(Gdx.input.justTouched()) 
    { 
     int x = Gdx.input.getX(); 
     int y = Gdx.input.getY(); 

     spriteIterator = spriteArray.iterator(); 
     while(spriteIterator.hasNext()){ 
      Sprite cur = spriteIterator.next(); 
      if(cur.getBoundingRectangle().contains(x, y)) { 
       System.out.println("Pressed button"); 
       //Change to collide message, and pause the game here 
      } 
     } 

    } 

它似乎沒有工作。按下按鈕確實會註冊,但看似隨機的地點和時間。請問有什麼更好的方法呢?

回答

0

你在你的應用中使用相機嗎? 然後你可能需要unproject(Vector3 vec)觸摸位置到你的相機和場景的座標系。這可能會導致你的問題。

無論如何,我強烈建議你使用由libgdx提供的scene2d。這樣,你可以創建演員和按鈕,工作得很好。例如,因爲它們支持很多不同的用戶操作。

爲了給用戶提供良好的用戶體驗,按鈕不應該在觸摸時發生反應,而應該讓玩家將手指從按鈕上擡起。另外,用戶可以點擊按鈕,然後滑下並在其他地方舉起手指以中止點擊按鈕。所以我肯定會推薦做不同的事情。

而且,嘗試使用基於事件的觸摸操控,這樣你就不必檢查每次都是這樣......

希望它能幫助... :)

+0

謝謝。我會看一看。雖然我沒有在這個菜單屏幕上使用相機。 – Wayneio

+0

@Wayneio您應該明確使用相機,或者如果您使用最新的libgdx版本,請使用Viewport。它很容易使用,並有很大幫助 – Springrbua

0

看到這個question

基本上,你需要投影或轉換你的屏幕觸摸位置到遊戲世界的位置