浅析反恐行动的游戏引擎——碰撞检测
碰撞检测的选择关系到系统的准确性、速度、简单性和适应性。碰撞检测在3D游戏中非常重要。好的碰撞检测要求人物在场景中能流畅移动,在一定高度内遇到台阶能自动上去,过高的台阶会挡住人,遇到坡度小的斜坡能上去,坡度过大会挡住人。当各个方向都被堵死的时候,应该尽量让人物往合理的方向滑动,而不是被迫停下来。在满足这些要求的同时,还要足够准确稳定,防止特殊情况下人物穿墙掉出场景。
反恐作战的碰撞类型:武器与场景,人物与场景,武器与人物。
记得刚开始的时候,因为之前玩过CS,所以,哎,看到敌人躲在掩体里后,一梭子AK子弹打在我身上,想干掉那几个家伙。_,碉堡后面敌人状态良好,碉堡上只出现了弹痕,颜色有深有浅,最后被猥琐的碉堡后面的敌人筛掉了。后面换成火箭,朝敌人碉堡飞去,期望打出一个大洞。_,连弹痕也没有,只有一个黑色的爆炸圈在碉堡上爆炸。武器对碉堡的攻击最多只能留下很深的色彩痕迹,但留下不同的痕迹是令人欣慰的。猜测:间谍代码,幽灵模式战队传闻两队都有007,_。利用武器与现场碰撞产生的痕迹给自己发送信息。(《碟中谍》看多了1-3。)
对于人物与场景的碰撞,大部分要求都达到了上述标准。场景可以平滑移动,一定高度内的台阶可以自动上去(比如反恐行动中每个楼梯的高度)。太高的台阶挡住了人物(比如反恐行动中高箱子的高度),坡度小的斜坡可以上去(比如反恐行动游戏中楼梯的倾斜度)。如果坡度太大,可以挡住人(比如反恐行动中法老庙内拱门内柱子的倾斜)。
关于特殊情况下穿墙掉出场景的人物,现在每个游戏中都不可避免。他们在CF里面的时候,经常会莫名其妙的掉出现场(无底深渊,好黑好吓人。),这种情况在反恐行动中发生的概率很小,因为从封闭beta到公开beta只见过一个人掉进去。以前内测的时候被打死,都不能复活玩游戏。在公测中,后者的情况基本未知。
还有一个大家都知道的现象。反恐行动不可能跳到人家头上,总会弹到对方头上。从网上的资料推断,可能是碰撞循环算法导致的,即没有发生碰撞,然后更新了物体的位置。如果发现碰撞,我们会将对象移回原来的位置,不允许它越过边界。当你在墙边,试图穿越时,视角开始晃动。你正在经历的是把主角搬回原来位置的情况。振动是由于取了较大的时间片而引起的。法老庙的断柱处还有一个小土堆的一角,去了会出现上面的现象。其次,幽灵基地的返回入口到a区的管道出口,推测这种现象并不是碰撞算法最坏的情况,但很有可能是哪个场景的参数带入算法造成的。其次,研究A区管道穿透现象,可能是碰撞检测在处理两个人,出现一个管道场景时,数据符合要求,但穿透人不现实。
武器和人物的碰撞很经典,尤其是用冷兵器战斗的时候,人物被击中的范围比人物大。根据分析,可以采用AABB(axis-alignedboundingboxes)算法。对于一个需要快速反应的3D射击游戏,我们可以为了速度和简化牺牲一些精度。所以在实战中,远离敌人攻击,结合上面提到的游戏引擎——动画动作。根据游戏实际效果,冷兵器战斗之门会为玩家打开大门。子弹队角色的碰撞非常激烈。拍摄人物上半身时,视线会抖动,尤其是手臂和肩膀。新手们注意了,我现在才知道,而且是失败的。_)