上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
黑黑 稍嫌羞澀的路人
註冊時間: 2011-02-05 文章: 2 來自: 台灣 28.07 果凍幣
|
發表於: 2011-2-5, PM 6:40 星期六 文章主題: 關於2D動作遊戲中,攝影機鏡頭的問題。 |
|
|
大家好,初次來到這個論壇,請多多指教-。
小弟先說明一下最近在製作一款 純2D動作遊戲。使用的語言是C++,Lib使用他人改過的DirectX。
移動方式採用橫向卷軸,小弟想讓攝影機鏡頭可以一直停在玩家身上,也就是角色的座標永遠在畫面中央。因此利用只移動背景造成視覺差來移動玩家,而非玩家本身移動。
這類型的參考遊戲像是PS2奧丁領域或是Wii朧村正。
小弟將敵人放入後,對敵人的行動就相當傷腦筋了-
舉例來說:
敵人跳躍,就要將敵人移動量+背景移動量算進去,(因為玩家座標始終是不動的)。由於敵人每個一舉一動都要計算,再加入多重背景後,整個原始碼既混亂又複雜。
想請教各位,如小弟想用這種方式(鏡頭始終跟隨玩家)製作2D遊戲,是否有其他方法(可能利用3D的攝影機但是畫面為2D遊戲?!),或是小弟可以利用其他移動方式達到同樣效果?
謝謝大家-。 |
|
回頂端 |
|
![](templates/subSilver/images/spacer.gif) |
yag Site Admin
註冊時間: 2007-05-02 文章: 688
2673.35 果凍幣
|
發表於: 2011-2-5, PM 9:18 星期六 文章主題: |
|
|
如你所說,敵人要計算的只有
1.移動量
2.背景移動量
因此你只需要兩個座標系
第一個是相對於整個場景
第二個是相對於視窗
場景座標系
首先你要先忽略視窗
也就是說,不要去考慮角色在畫面中央,也不要去考慮視窗大小
假設你場景大小是8000x600,座標往右往下為正
裡面各個物件的座標及其移動量應該都可以很直覺地做處理
比如說敵人從(1600,400)的位置往(1580,400)的位置移動之類
視窗座標系
接著才考慮在整個場景中,擷取我們要顯示在視窗上的那一個畫面出來
很明顯,這個畫面的正中央會是主角
假設主角現在的場景座標是(1300,400)
視窗大小是800x600
也就是說,視窗左上角的位置應該對應於場景座標(900,100)
這麼一來,只要將我們在場景座標系裡計算好的物件座標扣掉(900,100)
自然就得到了我們所要的視窗座標
而從(0,0)到(800,600)範圍內的物件就是要顯示的 |
|
回頂端 |
|
![](templates/subSilver/images/spacer.gif) |
黑黑 稍嫌羞澀的路人
註冊時間: 2011-02-05 文章: 2 來自: 台灣 28.07 果凍幣
|
發表於: 2011-2-6, PM 6:40 星期日 文章主題: |
|
|
To yag:
非常感謝您的指導,小弟受教了。
剩下實作方面小弟還要再多實驗一下,將來有新的問題還請多指教,謝謝您! |
|
回頂端 |
|
![](templates/subSilver/images/spacer.gif) |
|