僵尸类
{
sprite* texture
虚函数 move()
}
大僵尸:僵尸类
{
僵尸list,添加子僵尸用
重写move(),每一次move都会触发list中的子僵尸move
闪烁blink()
}
小僵尸:僵尸类
{
僵尸指针,大僵尸
重写move(),超出跟随距离,迅速向大僵尸移动,距离内随机移动,我看那游戏不像是转圈
}
问题来了 这个随机移动,又怎么随机呢?不像是转圈为什么看上去还是那样规整!你是用大僵尸来触发子僵尸的move,那么大僵尸不移动的时候,子僵尸岂不是不会触发move了,也就是说子僵尸在大僵尸休闲状态与应该有一个自身行为,这个应该在每帧去刷新,这样说来,就不能用大僵尸来处罚子僵尸了,应该是子僵尸自己去检测到大僵尸的距离,在作出相应地动作!还有小僵尸看上去很灵活,并且我看到里面那一圈的僵尸会走一回在稍微停一会儿!这种效果又该怎么设计?绑定节点的做法很简单,但是很死板!
大僵尸维护一个list,list存放小僵尸
大僵尸每帧刷新小僵尸位置,以大僵尸为圆心的若干个同心椭圆,顺时针变化。
小僵尸如果在非战斗状态则移动到大僵尸计算出的位置,如果在战斗状态则根据目标敌人改变自己位置。
有新的小僵尸加入时根据大僵尸位置计算其起始位置。
当所有僵尸都不在战斗状态时遍历list移除死亡的小僵尸,重新计算小僵尸位置
你的这个想法和我的差不多,但是有一点小僵尸的位置是可以不去每帧计算的可以做一个模板动画(若干个节点围绕大僵尸做圆周运动)省了在大僵尸里面去做每帧计算,只要去读取模板对应节点位置即可获取的到该帧小僵尸的位置。现在我的问题是,小僵尸怎么做才能更加灵活而且计算量要小!
不太明白你说的模板动画是什么意思,节点围绕大僵尸做圆周运动的话同样每帧要update自身坐标,这和在大僵尸里做位置运算效率是一样的,只是你自己算和交给action算的差别。
目前遇到一个问题
1:就是游戏及时性太强,关于碰撞检测,采用网格计算的话,由于角色本身大小各异,做起来比较麻烦不太适合!大家有什么好的意见?个人想加入物理引擎,用物理引擎的碰撞检测!应该会好一些吧!
2:还有rpg一般用不了批渲染(因为zoder层次一直在变),导致渲染能力下降。
这两个问题是性能的一个瓶颈,导致一iphone4在僵尸20,怪物10几个左右的时候就会很卡!很是头疼!