[問題] 關於2D動作遊戲的疑問

作者: allenwang15 (艾倫王十五)   2014-03-18 09:36:00
大家好
小弟在版上發過幾次文問過一些問題
Flash也用了好一段時間,不過發現自己程式還是寫得很沒架構
版上的大大們討論最新的技術跟引擎都很熱絡,雖然我都看不太懂0.0
只能說深感佩服
題外話完了,想請教一些問題
我想做一個2D卷軸動作遊戲
不過尤其是攻擊的部分,大家的碰撞都是怎麼寫的
我的做法是,在攻擊動畫中揮刀的動作,會放入一個透明的MovieClip
來當作碰撞判定的物件,然後敵人都會被存在一個Sprite中
遊戲會不斷用判斷透明的碰撞物件是不是跟Sprite中的其中一怪碰撞
但是不知道是不是這樣做法不好,有時候明明砍到怪物卻沒事
有時候又砍得到,難道是揮刀時間太短(透明碰撞物件出現兩個影格左右),
所以造成判斷來不及嗎? 但感覺不太可能......
另外,大家在做這類遊戲時,判定都是怎麼寫得呢?
我的意思是想問,比如說主角、怪物、武器、魔法、隊友這些物件
在場上碰撞來碰撞去,還是要用迴圈處理所有物件嗎?
每一個子彈都用迴圈去偵測是否跟場上的所有物件有沒有碰撞這樣?
還有,讓我最納悶的就是,如果遊戲地圖很大,通常都會將地圖分塊
然後角色靠近再動態產生,這樣比較不耗效能,但是如果場地上有怪物
主角離開後,場地消失,怪物就會摔下去。這問題一直都蠻困擾我的0.0
不知道這問題大家都是如何解決的。
問了超多問題,煩請高手幫忙解答了
而且我自己這樣一問,感覺自己應該多念念遊戲架構之類的書0.0
然後我覺得我想來學個Box2D,根本沒玩過任何引擎...
作者: allenwang15 (艾倫王十五)   2014-03-18 10:22:00
附上swf檔案讓大家參考 http://0rz.tw/oJ9qk是說把碰撞物件存在的時間拉長似乎就可以了
作者: KawasumiMai (さあ、死ぬがいい)   2014-03-18 12:00:00
1.可能看你要用哪個視點去處理?例如子彈視點跟怪物視點?前者是子彈判定有沒有撞到怪物,後者是怪物判定有沒有被子彈打到。2.以場景來說簍空的物件可以判定穿透,所以可以同圖層先判定是否有碰撞再看碰撞哪一個子物件?例如先判定是否打到怪物layer再看打到哪個怪物減少判定頻繁度3.場景既然使用動態生成,那麼場景不存在的區域是否也該讓怪物的重力反應先停掉呢?4.承3,既然這樣,子彈判定的怪物應該只有螢幕周圍一段距離內的怪物吧?不用判定所有怪物才對
作者: allenwang15 (艾倫王十五)   2014-03-18 12:19:00
感謝K大熱心回應
作者: KawasumiMai (さあ、死ぬがいい)   2014-03-18 13:50:00
但是怪物既然也是使用重力+碰撞去決定貼地,那麼就不可能場景移除還能懸空,螢幕外一段距離後怪物應該沒必要維持AI?這點就算是考慮重生也是差不多的想法吧?你會注意到很多遊戲只要怪物只要在螢幕內外進進出出就會一直以同樣的位置和初始動作Reset
作者: iverson007 (Hu Chin Hsiang)   2014-03-30 02:13:00
2D+橫向卷軸+物理=Citrus Engine(Starling Framework)

Links booklink

Contact Us: admin [ a t ] ucptt.com