我跟着Youtube視頻指南製作了一個使用LibGdx的小行星遊戲,製作視頻的人沒有包含觸摸屏控制,因爲他們只是在桌面版本中進行操作。 我已經設法使用LibGdx觸摸板,我已經掌握了它幾乎工作,但旋轉船舶時有一些問題。使用LibGdx觸控板緩慢旋轉物體
我的觸摸板根據角度給出-pi和+ pi之間的值(右側爲0,bottom爲負值,top爲正值)。這同樣適用於船目前的方向。
問題是,隨着船隻緩慢旋轉,如果你在左側,並用觸摸板從-pi改變爲+ pi,船將圍繞很長的路旋轉。我提出的每個解決方案都會在其他地方引發問題。我的最新解決方案我認爲可行,但在不同領域存在同樣的問題。
弧度是方向船當前面臨的。 touchPadDirection是觸摸板保持的方向。 兩者均以弧度表示。
if (radians < touchPadDirection){
if(radians - touchPadDirection < MathUtils.PI && touchPadDirection > MathUtils.PI /2 && radians < MathUtils.PI /2) {
System.out.println("1st choice");
setRight(true);
setLeft(false);
}else{
System.out.println("3rd choice");
setLeft(true);
setRight(false);
}
}
if (radians > touchPadDirection) {
if(radians - touchPadDirection > MathUtils.PI && touchPadDirection < MathUtils.PI /2 && radians > MathUtils.PI /2) {
System.out.println("2nd choice");
setRight(false);
setLeft(true);
}else{
System.out.println("4th choice");
setRight(true);
setLeft(false);
}
}
}
我與谷歌發現的唯一的旋轉問題似乎幫助,如果該項目立即轉動,因爲它只會面對船的方向。所以我需要以某種方式讓它始終保持正確的旋轉方式(始終以最快的方向旋轉)。請記住,值介於-3.14和3.14之間,當小的變化導致船舶長時間旋轉時,原來的問題就出現了。
我不是最好的解釋所以希望有人明白我想達到什麼,並提前感謝。