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

看板Flash作者 (艾倫王十五)時間10年前 (2014/03/18 09:36), 編輯推噓3(3017)
留言20則, 3人參與, 最新討論串1/1
大家好 小弟在版上發過幾次文問過一些問題 Flash也用了好一段時間,不過發現自己程式還是寫得很沒架構 版上的大大們討論最新的技術跟引擎都很熱絡,雖然我都看不太懂0.0 只能說深感佩服 題外話完了,想請教一些問題 我想做一個2D卷軸動作遊戲 不過尤其是攻擊的部分,大家的碰撞都是怎麼寫的 我的做法是,在攻擊動畫中揮刀的動作,會放入一個透明的MovieClip 來當作碰撞判定的物件,然後敵人都會被存在一個Sprite中 遊戲會不斷用判斷透明的碰撞物件是不是跟Sprite中的其中一怪碰撞 但是不知道是不是這樣做法不好,有時候明明砍到怪物卻沒事 有時候又砍得到,難道是揮刀時間太短(透明碰撞物件出現兩個影格左右), 所以造成判斷來不及嗎? 但感覺不太可能...... 另外,大家在做這類遊戲時,判定都是怎麼寫得呢? 我的意思是想問,比如說主角、怪物、武器、魔法、隊友這些物件 在場上碰撞來碰撞去,還是要用迴圈處理所有物件嗎? 每一個子彈都用迴圈去偵測是否跟場上的所有物件有沒有碰撞這樣? 還有,讓我最納悶的就是,如果遊戲地圖很大,通常都會將地圖分塊 然後角色靠近再動態產生,這樣比較不耗效能,但是如果場地上有怪物 主角離開後,場地消失,怪物就會摔下去。這問題一直都蠻困擾我的0.0 不知道這問題大家都是如何解決的。 問了超多問題,煩請高手幫忙解答了 而且我自己這樣一問,感覺自己應該多念念遊戲架構之類的書0.0 然後我覺得我想來學個Box2D,根本沒玩過任何引擎... -- Allen Wang's Blog http://allenwang15.pixnet.net/blog 個人部落格 裡面主要放自己的短篇漫畫相關作品 有興趣可以來看看 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.24.28.126

03/18 10:22, , 1F
附上swf檔案讓大家參考 http://0rz.tw/oJ9qk
03/18 10:22, 1F

03/18 10:49, , 2F
是說把碰撞物件存在的時間拉長似乎就可以了
03/18 10:49, 2F

03/18 12:00, , 3F
1.可能看你要用哪個視點去處理?例如子彈視點跟怪物
03/18 12:00, 3F

03/18 12:00, , 4F
視點?前者是子彈判定有沒有撞到怪物,後者是怪物判定
03/18 12:00, 4F

03/18 12:01, , 5F
有沒有被子彈打到。
03/18 12:01, 5F

03/18 12:01, , 6F
2.以場景來說簍空的物件可以判定穿透,所以可以同圖層
03/18 12:01, 6F

03/18 12:02, , 7F
先判定是否有碰撞再看碰撞哪一個子物件?
03/18 12:02, 7F

03/18 12:02, , 8F
例如先判定是否打到怪物layer再看打到哪個怪物減少判
03/18 12:02, 8F

03/18 12:02, , 9F
定頻繁度
03/18 12:02, 9F

03/18 12:02, , 10F
3.場景既然使用動態生成,那麼場景不存在的區域是否也
03/18 12:02, 10F

03/18 12:03, , 11F
該讓怪物的重力反應先停掉呢?
03/18 12:03, 11F

03/18 12:03, , 12F
4.承3,既然這樣,子彈判定的怪物應該只有螢幕周圍一
03/18 12:03, 12F

03/18 12:03, , 13F
段距離內的怪物吧?不用判定所有怪物才對
03/18 12:03, 13F

03/18 12:19, , 14F
感謝K大熱心回應
03/18 12:19, 14F
1的話,我知道原理,只是想知道大家普遍用哪種,不過我想也是看遊戲內容 3,我想說讓怪物仍然在場上做自己的事情,所以才不停掉他的動作 ※ 編輯: allenwang15 來自: 163.24.28.126 (03/18 12:39)

03/18 13:50, , 15F
但是怪物既然也是使用重力+碰撞去決定貼地,那麼就不
03/18 13:50, 15F

03/18 13:51, , 16F
可能場景移除還能懸空,螢幕外一段距離後怪物應該沒必
03/18 13:51, 16F

03/18 13:51, , 17F
要維持AI?這點就算是考慮重生也是差不多的想法吧?
03/18 13:51, 17F

03/18 13:52, , 18F
你會注意到很多遊戲只要怪物只要在螢幕內外進進出出
03/18 13:52, 18F

03/18 13:52, , 19F
就會一直以同樣的位置和初始動作Reset
03/18 13:52, 19F

03/30 02:13, , 20F
2D+橫向卷軸+物理=Citrus Engine(Starling Framework)
03/30 02:13, 20F
文章代碼(AID): #1J9wC7W1 (Flash)
文章代碼(AID): #1J9wC7W1 (Flash)