簡體   English   中英

定心雪碧還是移動相機? C ++ / Opengl的

[英]Centring Sprite or moving camera? C++/Opengl

我正在自學C ++並玩2D平鋪貼圖。

我一直在讀通過這個scrolling在這里 ,這是在此基礎上平鋪教程

使用上面的教程和Pearson, Computer Graphics with OpenGL書籍的一些幫助Pearson, Computer Graphics with OpenGL我編寫了一個小程序,它繪制了一個40x40平鋪世界和一個Sprite (也是一個平鋪)。

在繪制/渲染順序方面,地圖(或世界)本身就是背面層,而Sprite是最前面(或頂部)層。 我假設這是一個很好的方式,因為2個瓷磚比瓷磚和自定義精靈或矩形更容易交互。 那是對的嗎?

我已經實現了一個Keyhandling()函數,它允許您使用keyboards arrow keysviewport內移動map 我有一個名為offsetx, offsety的變量,當按下一個鍵時會增加或減少。 根據我是否將變量分配給mapsprite ,我可以在屏幕上的任何方向上進行更多操作。

似乎都不能很好地工作,所以我將變量分配給(map和sprite)但是精靈的正值和地圖的負值。 因此,按下按鍵時,這允許我的精靈在一個方向上移動,同時地圖以相反的方向移動。

我的問題是,精靈很快移動到離開窗口並且不足以將更多的地圖帶入場景。 (窗口在任何時候僅顯示大約1/8th的瓦片)。

我一直在思考,我認為解決這個問題的一種有效/有效的方法是將sprite修復到屏幕的中心,當按下一個鍵時, map會四處移動......我不確定盡管如此。

這會是一個好方法嗎? 或者它是否也會移動視口或相機?

你不想在角色移動時相對於Sprite移動所有東西。 考慮一個更復雜的世界,你在地圖上還有其他東西,例如其他精靈。 最簡單的方法是保持地圖固定,並相對於地圖移動每個精靈(如果它是一個可移動的精靈)。 只要你的角色在世界各地移動,移動世界上的一切都沒有多大意義。

如果你想要將你的角色總是放在中心來渲染你的世界,那就完全沒問題了。 最好的辦法是移動相機。 這樣您還可以輕松地放大/縮小相機,旋轉相機等,輕松跟蹤世界上所有物體。

請注意您對“視口”一詞的使用。 這意味着OpenGL中的一個非常具體的東西。 (即看看函數glViewport )。 如果你的書以不同的方式使用它,那很好。 我只是指出這一點,因為我並不是100%清楚你的意思。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM