2017-06-17

STG的機制:螢幕坐標定位與世界坐標定位

介紹地形射擊遊戲的一個機制,最近在寫美術人員訓練教材順便寫這篇。

玩Cyber Sprite的時候有沒有發現一個現象,像下圖敵人是往下發射子彈,但仔細比對一下,子彈似乎不是直線往下。


還有高速移動打boss的時候,子彈與主角、boss同步移動,但命中後的火花會高速後退。


這是因為不同物件定位方式不同,筆者也是開始做地形STG才注意到定位方式大有學問。
同時發在巴哈姆特



地形STG裡依不同物件有兩種定位方式:
第一種:螢幕坐標定位


第二種:世界坐標定位


Cyber Sprite裡面,主角和大部分飛行敵人是螢幕坐標定位。


固定砲台和地上走的敵人則是世界坐標定位。


有些敵人會改變,剛出現還沒動時是世界坐標,開始移動追主角之後變成螢幕坐標。


至於子彈,筆者做物件移動的時候有參考一些捲軸射擊遊戲,發現子彈大多用螢幕坐標定位,即使是地面砲台發射的子彈也一樣。STG之外也有研究ACT看有什麼差異。

實際測試過的感覺是,如果畫面捲動時主角會同時動,則子彈要用螢幕坐標定位。
如果畫面捲動時主角不會跟著動,如ACT的強制捲動關卡,那子彈要用世界坐標定位。
和主角用相同方式玩家比較好估計子彈路徑,比較不會讓人覺得「好難預測,怎麼練習都躲不掉,這遊戲陰人!」。

開頭第一張圖,子彈是螢幕坐標,以地形為基準的話子彈會隨著地形向左捲動右偏,以螢幕為基準來看才是直線向下。
第二張圖,火花會隨捲動後退是因為它是世界坐標,這樣可以做出高速移動的感覺。

各位可以找一些有地形STG、ACT來看看,觀察裡面的物件是用哪種方式定位。



有兩種定位方式是地形STG才要考慮的問題,無地形就不用考慮那麼多,全部用螢幕坐標定位。
有地形和無地形製作方式差很多,玩起來感覺也不一樣,有些人誤以為Cyber Sprite是彈幕遊戲,或是把所有STG都叫做彈幕,這是很大的誤解。
(筆者做過射擊遊戲之後體會到為什麼彈幕會流行,無地形容易製作是原因之一,多了地形製作難度就高很多)

至於實作方法,Cyber Sprite的物件位置都是用世界坐標計算,繪製時再用坐標轉換算出畫面上的位置,螢幕坐標定位的物體也一樣。
想像遊戲畫面也是一個物體在地圖裡移動


每個frame一開始先求出畫面在地圖裡的位置(screenX,screenY),以及這個frame內的移動距離(scrollVX,scrollVY)
然後每個物體照自己的飛行、走動特性算出移動距離(vx,vy)

世界坐標定位的物體,把位置加上移動距離即可。
x+=vx;
y+=vy;

螢幕坐標定位則還要加上畫面移動距離,讓物體隨畫面移動。
x+= vx+scrollVX;
y+= vy+scrollVY;

有個地方比較特別,Cyber Sprite有個地方橫向是強制捲動,縱向是自由捲動,可以在約兩個畫面的範圍裡上下移動。


此時主角的移動是橫向受捲動影響,縱向由玩家控制,有縱向捲動但scrollVY設為0,只有scrollVX會影響子彈。

沒有留言 :

張貼留言