作者cjcat2266 (CJ Cat)
看板Flash
标题Re: [讨论] 2D横向卷轴动作游戏的动作树
时间Sat Sep 25 01:18:56 2010
※ 引述《KawasumiMai (魔物を讨つ者)》之铭言:
: 这次要问的是洛克人的动作树
: 洛克人X中,有站,走,冲,跳,空冲,攀墙下滑,弹璧,撞天花板等动作
1F:→ etrexetrex:如果你会增加动作树的节点 应该考虑一下 state pattern 09/23 13:10
这个动作树看起来跟
之前我与Etrex参加巴哈姆特游戏设计大赛的作品有像
http://prj.gamer.com.tw/bcgc_vote/play_01.html
我的作法基本上就如同Etrex建议的一样,是用类似State Pattern的作法
另外搭配Box2D来做碰撞侦测与模拟
不太一样的是,我的state不是每一种input对应到一个method
而是在一个abstract method里面侦测input
然後决定是否变换state
每一个class定义一种state
这是我的State部分的原始码,你可以参考看看
http://bit.ly/aUQwxr
base class为PlayerState class
PlayerState.setState()为设定新state的method
PlayerState.onTick()每一个frame都会被呼叫
按键侦测就是在这个method中执行
各state会依照不同input而有不同行为
我已经忘记当时的动作树是怎麽设计的了(因为手稿不见啦...)
但是观察各state侦测input而呼叫setState()的时机
把原本的动作树重新画出来应该不会很难
StandingState是一开始的state
剩下的state名称也取得很白话了
有velocity字眼的code,就是跟Box2D模拟的物件速度有关系
变数名称取得很明白了,应该是看看就知道在做什麽
至於有movie clip字眼的code可以忽略
那是跟控制角色view有关的code而已
理论上这种view的code应该要跟model分开
不过当时因为在赶工,所以不管那麽多了...
--
CJ Cat = Croa'J Cat = Cockroach Cat = 西街凯特 = 蜚蠊猫 = 蟑螂猫
Blog
http://cjcat.blogspot.com
Gallery
http://cjcat2266.deviantart.com
ptt2 Board CJWorkshop - 阿多比闪光(Adobe Flash)研讨区
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.168.21.249
※ 编辑: cjcat2266 来自: 118.168.21.249 (09/25 03:05)
2F:→ KawasumiMai:先感谢指教,有空我会多研究这篇 09/25 14:33
3F:推 dsmwang:必推 09/25 22:32