posts - 311, comments - 0, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

(地基工)人物控制队列想法

Posted on 2010-11-22 16:20 点点滴滴 阅读(322) 评论(0)  编辑 收藏 引用 所属分类: 08 游戏SDK

动作切换序列思路模拟:

人物的动作分为上半身,下半身动作

上半身动作:休闲、走路(向前、向后、向左、向右)、跑步(向前、向后、向左、向右)、准备战斗、跳(开始跳,跳循环、结束跳)
下半身动作:休闲、走路(向前、向后、向左、向右)、跑步(向前、向后、向左、向右)、准备战斗、跳(开始跳,跳循环、结束跳)

控制逻辑:


*******************************************************悲伤的分割线****************************************************************
队列命令问题:
1.走路的时候队列创建太频繁,进行解决(使用队列池)
2.上面一个队列执行完毕后执行下一个队列。
3.队列要能够同时处理两个命令,因为在运动的时候是一个命令,战斗的时候是另外一个命令。
4.初步决定使用两个队列,分别控制上半身和下班身动作。

第一种解决方案思路整理(走路+攻击):
1.命令分类,外部根据命令往队列里面插入命令
2.命令开始执行,成员变量记住命令的参数,并在渲染的每一帧执行命令。
3.执行的每一帧插值,处理命令

举例:
1.往命令队列中插入走路命令。                                                                       1 
2.在每一帧中执行走路命令,保存目标位置和源位置,并进行插值。
3.往命令队列中插入准备攻击命令                                                                   2 有一帧不走动了。解决思路:执行攻击的时候也执行走路插值。??有可能没有问题,因为速度过快
4.开始执行准备攻击命令                                                                                   
5.在每一帧中执行准备攻击命令                                                                       3 
6.往命令队列中插入走路命令。                                                 
7.在每一帧中执行走路命令,保存目标位置和源位置,并进行插值     4 

想法:
1.上半身和下半身无任何影响(战斗:如果下半身进行休闲动作才改变,否则只改变动作。移动:如果上半身休闲才改变,否则不改变)
2.上半身动作影响下半身.(施法:直接修改上下半身动作为施法)
3.动作播放结束后处理为

队列影响:
第二种情况直接用队列一个一个处理。
第一种情况比较难处理(在处理战斗时候,处理换动作命令,然后处理移动命令)
//StartAction分为全身和上半身。。。。。

动作分组:
休闲动作,不打断动作,进度条动作, 动作播放完毕。

不可行:因为只有一个队列,所以执行走路命令的时候不能处理战斗的命令。 此方法抛弃。

*******************************************************希望的分割线****************************************************************
麻烦:
解决方案:
对外接口:外部参数不管上半身,下半身动作,根据命令类型分配到上半身和下半身队列中去,控制上半身和下半身休闲,战斗。//全身动作或者上半身动作。

1.分为上半身,下半身动作两个命令队列分别处理上半身和下半身动作。

举例:
走路+战斗:
1.命令队列中插入走路命令
2.向上半身,下半身队列中分发各分发一个走路命令。
3.会同时处理走路命令。
4.命令队列中增加战斗命令。
5.判断下半身时候休闲,不是的话分发战斗命令,向上半身队列中分发战斗命令。
6.处理上半身,下半身动画播放过程中的处理。

注意:
1.上半身的动作和下半身一样的时候。根据下半身的动作帧数控制。
2.分发器,根据不同的游戏有不同的分发原则。

*******************************************************希望的分割线****************************************************************