2016-08-24 46 views
0

所以在我的遊戲中,當我觸摸屏幕,連接播放器和天花板時,我會產生一個抓鉤。問題是我的inputAdapter的touchDown()似乎只在我第一次觸摸時激活,當我再次觸摸時(意味着:沒有其他「抓鉤鉤子」被創建,只有一個),沒有任何反應。 touchUp()或其他輸入方法仍然有效。TouchDown似乎只在整個應用程序中觸發一次[libGDX]

這裏是所有類:Rope - GamePlay - 以防萬一InputManagerMainMenu

編輯 所以我是一個白癡,並在overlapsOnX()方法忘了加減法,寬度的「雲」,所以除非我非常幸運(或在適當的地方產卵)繩子不會被創建。

這裏的方法應該怎麼看起來像

private boolean overlapsOnX(Body player, Body cloud){ //check if the player is currently in the same X position than a cloud 
    return player.getPosition().x >= cloud.getPosition().x - (20/PPM) && player.getPosition().x <= cloud.getPosition().x + (20/PPM); 
} 
+0

只是移動Gdx.input.setInputProcessor(新InputAdapter(){...的演出方法,使雙方的觸地得分和潤色方法返回true。 – Hllink

+0

Didnt修復它。我不得不這樣說,這原本。 –

+0

它可能是你的遊戲邏輯,但從來沒有在渲染循環內創建實例,你正在創建一個新的inputAdapter每一幀,並將其分配給gdx輸入處理器.. – Hllink

回答

1

的TouchDown返回一個布爾值,表示如果輸入已經被處理過。你返回假,但你可能意味着返回true。這將表明輸入已完成處理。

+0

是的,我把它作爲如果它得到了修正,我們將它改爲se。結論:真假無論如何都不會影響它。 –

+0

我不確定是什麼打破了它,但有幾件事是你想要做的: 1.most或者所有的onShow代碼在onCreate方法中可能會更好,當屏幕被創建時會被調用一次特德。 2.您應該將輸入處理器設置爲onCreate,而不是渲染。您無需在每個渲染循環中創建一個新的輸入處理器。這可能是問題的一部分。 3.我並不熟悉繩索的工作方式,但是在世界不是中階段的時候,他們很可能必須在世界上添加和移除它們。這可能會在課堂上處理,或者可能不會。 – M1LKYW4Y

+0

嘿,所以我嘗試清理東西,將輸入移動到另一個類並將東西移動到GamePlay構造函數而不是show()。儘管如此,一切都完全一樣。以下是所有課程:[Rope](http://pastebin.com/pHgRTq0v) - [GamePlay](http://pastebin.com/SiL0ZAqJ) - [InputManager](http://pastebin.com/GNDbAG7A)也是爲了防止[MainMenu](http://pastebin.com/fKLE4kvn) –

相關問題