我正在嘗試製作一個類似「我的世界」的3D遊戲,但我似乎不知道如何將鼠標移動到屏幕中央?我使用lwjgl來處理鼠標輸入。我只想讓鼠標光標停留在我創建的窗口中間。我看到在lwjgl鼠標類中有一個Mouse.grab
方法,但是當我將它設置爲true時,它似乎沒有任何操作。將光標固定在屏幕中間?
0
A
回答
0
首先,讓我們看看Mouse.grab(true)
做什麼。有兩種截然不同的操作,全部分組爲一個呼叫。第一個是將光標固定在屏幕中央,第二個是使光標不可見。這兩種操作相結合都會將光標鎖定在屏幕的中心。爲了得到輸入(我假設你已經使用這種方法進行相機移動),你必須使用鼠標類的差分位置函數Mouse.getDX()
和Mouse.getDY()
,它們返回光標光標位置的變化(有效地多少用戶已經移動鼠標)這個框架。
現在,在3D遊戲中,您傾向於使用十字準線。這不會被誤認爲是鼠標。十字準線是繪製在場景(以及幀緩衝區(屏幕)的中心)上的UI元素,其給出了玩家關於屏幕中心位置的參考點,並且在射擊遊戲中,子彈他們會拍攝出來,讓他們瞄準。
在這裏,我將提供一個簡短的例子,說明如何實現這種效果。 如果你使用直接模式和固定管道(GL11)或後續版本,這個代碼將會有很大的不同,這取決於你如何做圖形,因此,這將主要是僞代碼。隨意指定你正在使用的渲染方法,我可以給你一個更詳細的例子。
// Your 3D render code here
float aspectRatio = Dislay.getWidth()/(float) Display.getHeight();
// will depend on your rendering implementation
// however the concept stays the same, you switch from a perspective view
// to an orthogonal view
switch_projection_matrix_to_ortho(-1 * aspectRatio, 1 * aspectRatio, -1, 1, -1, 1);
// Apply a crosshair texture
crossahir_texture.bind()
// Draw a quad
quad.draw()
希望這有助於!
相關問題
- 1. 將光標定位在屏幕上
- 2. 如何用GLUT將鼠標固定在屏幕中央?
- 3. 固定屏幕div
- 4. 如何將光標置於屏幕外?
- 5. 屏幕上的固定標籤
- 6. 在屏幕上移動鼠標光標
- 7. 的Android 5.1.1固定屏幕
- 8. 屏幕固定和來電
- 9. 高度屏幕,但固定
- 10. HTML 5固定屏幕iPad
- 11. 固定屏幕邊框
- 12. 忙光標位置在屏幕上
- 13. Vim在緩衝區切換後將光標置於屏幕中間
- 14. 固定div在手機屏幕底部
- 15. 固定在屏幕底部的按鈕
- 16. GADBannerView固定在UITableViewController的屏幕底部
- 17. 在Android屏幕底部固定內容
- 18. 如何在屏幕抓取中捕獲鼠標光標?
- 19. 在多屏幕設置中隱藏鼠標光標
- 20. Vte:在屏幕座標中獲取光標位置
- 21. 將Java光標隱藏在屏幕上的任何位置
- 22. 鼠標在XNA屏幕中間抖動
- 23. 顯示自定義光標在全屏幕模式 - 的Flex 3.0
- 24. xna在固定屏幕座標上顯示3D對象爲2d
- 25. OSX - 使光標點擊特定的屏幕座標
- 26. 多監視器屏幕截圖 - 定位鼠標光標
- 27. 使Html-Custom-Cursor屏幕光標
- 28. 如何將鼠標光標位置設置爲C#屏幕上的指定點?
- 29. CSS將元素保持在屏幕上的「固定」位置
- 30. 確定光標位置是否在屏幕的特定區域中
但我有一個問題..我沒有把鼠標固定到屏幕的中心,但Mouse.getDX或Mouse.getDY不起作用!任何你可以幫助的方式? –
嘗試打印出你從三角函數'System.out.printf(「(%d,%d)\ n」,Mouse.getDX(),Mouse.getDY());'得到的值並確保你正在調用每個函數一次,因爲調用它會導致重置值 – claudehenry