2017-06-06 112 views
0

我正在使用libgdx遊戲庫處理僅限桌面的項目,並且我正在尋求實現用戶何時水平滾動以平移相機的方式。如果可能,我想避免使用libgdx的scene2d。但是,我看不到找到捕獲水平卷軸的方法。無論如何檢測Libgdx中的水平鼠標滾動?如果可能,我想避免使用libgdx的scene2d。如果沒有,有沒有辦法使用普通的java,而不使用awt,swing或javafx?Libgdx檢測水平滾動

回答

0

水平鼠標滾動?除非您使用帶有多個滾輪的鼠標,否則不會有這種情況。通常鼠標有一個滾輪。

但是,如果您的意思是水平移動鼠標,則應該能夠使用getDeltaX()捕獲該圖標。請注意,這是一個原始輸入,所以您需要將其除以屏幕寬度,以便在您使用的任何顯示器上進行移動。您可能還需要包含一個靈敏度乘數,以便用戶可以選擇平移有多快。

通過檢查按鍵是否被按下來允許使用相同的輸入來旋轉相機通常是有幫助的。考慮這個僞代碼:

void updateCamera() { 
    if (LeftShiftPressed()) { 
     RotateCamera(getNormalizedX()); 
    } else { 
     PanCamera(getNormalizedX()); 
    } 
} 

float getNormalizedX() { 
    return float(getDeltaX())/float(getScreenWidth()) 
} 

void PanCamera(float x_movement) { 
    // pan by x_movement * pan_multiplier 
} 

void RotateCamera(float x_movement) { 
    // rotate by x_movement * rotation_multiplier 
} 
+0

水平滾動絕對是我認爲的事情。就像在我的筆記本電腦觸摸板上一樣,我可以用兩根手指上下滾動頁面。但是,我可以將兩根手指橫向拖過觸摸板,也可以側面滾動。我正在尋找一種方法來捕捉。但我真的不確定如何捕捉觸摸板上的多個手指移動。 – user1762507

+0

@ user1762507看起來您可以使用'getDeltaX(int)'來檢查每個手指位置的變化。在操作系統看到它們時,我看不出任何支持libgdx支持的手勢。查看'getX(int)'的文檔以獲取手指如何被檢測到的描述。 – Aaron3468