游戏中的阵型移动分析

有人的地方就有江湖,游戏里也一样。无论为了什么目的,游戏中的人也被无形分出了三六九等,于是各个游戏角色站位就有了讲究。于是乎,就有了今天的问题:当大家都是有身份的人的时候,怎么移动最能体现这种地位?

其实这个问题是因为最近做的项目而来。游戏类型算是一种RTS,而且还需要结队行走,所以这里就有了需求:整个队伍按照阵型移动且过程平滑。

今天就用一字长蛇阵来聊聊这个话题吧!

一字长蛇阵就好比开火车,火车头走自然带着车厢一起走,而且走的过程当中车厢并不会打乱顺序,所以很符合我们的需求模型。不绕圈子,下来就说说几种实现方式吧。

1.以车头为原点,计算得出其他车厢的位置。

这种方法应当是比较常见的一种,即在确定了车头的位置和角度后,沿着反向通过车厢间隔就可以确定每个车厢的目标位置。在确定了位置之后,可以在游戏中让车厢瞬移到目标位置并调整方向,也可以让车厢平滑向目标点移动,并实时更改车厢角度。

好处:计算简单啊!二维空间下知道一个点和点的方向,计算反向固定间隔的某点简直易如反掌。而且模型的理解成本低,实现也简单。

坏处:根本不符合需求啊!有人见过车厢瞬移的吗?火车是一条直线,车头一旦发生转向,整个火车就以车头为原点进行了旋转,视觉上就给人一种打死程序的冲动。即便让车厢平滑移动,也无法保证视觉上车头车尾的首尾相连,更何况转弯大点的时候还有可能出现车厢交错的情况。所以在当前需求下,这种情况被pass。

2.以每一节车厢后向某固定点作为下一节车厢目标点。

这种方法是第一种的变种,为了破解僵硬而存在。具体操作就是让车头后固定某点作为车厢1的目标点,然后在得出车厢1的坐标与方向后再在其后固定某点作为车厢2的目标点,依此类推。这样做的好处自然不会让火车永远是一条直线,随着车头转弯,车厢1随即移向目标点且自身产生旋转,由于旋转的叠加效应,后续车厢自然使整列火车变成了一个弧形。这种情况下,瞬移也会有很好的效果,相较方案1避免了多数叠加的情况。如果平滑过渡自然表现会更好。

好处:火车终于不再僵硬,因为每一节车厢的旋转都是依据前一节车厢计算而得,因此这样得到的结果本身也更为平滑,已经很接近需求。

坏处:计算量加剧,如果车厢多一点,则每一次都需要计算车厢的方向是一个性能消耗点。虽然移动更为平滑,但是在瞬移模式下,由于旋转由叠加而成,因此旋转方向一旦发生变化,末端的车厢会发生较大距离的位移,因而产生失真,依旧不适合当前需求。

3.以每一节车厢为后一节车厢的移动方向,根据间隔距离计算目标点。

这种方法以方法2反向而得。具体操作就是车头移动,然后车厢1向车头移动,且保证车厢1与车头的距离等于两者原本的间隔,然后车厢2向移动后的车厢1移动,且保证二者距离不变,依此类推。这种情况下我们可以计算得出,只要某一方的瞬间旋转的角度不超过阈值,便可以保证不失真(阈值的计算与间隔、瞬间移动距离和方向有关,即保证A移动后与B的间隔大于A移动前与B的间隔)。

好处:最贴近目前需求。移动不再僵硬,解决了左右旋转瞬间可能产生的失真,即便使用瞬移也可以使视觉效果顺滑。

坏处:与方法2计算量基本一致,如果以火车模型说明问题,则车厢之间连接处还是有错位的失真,只是这种失真较之前小很多罢了。

小小的总结下吧

目前尝试了这三种,不排除还有其他的方案,比如逐帧记录运行轨迹然后复原等。总体而言,以上三种如果说对于火车这种首尾相连要求苛刻的模型,则都会有失真的情况,但如果只是比照火车运行轨迹,则方案3更为平滑符合要求,方案2则由于运行速度、旋转方向等关系使用条件较为苛刻,方案1则让扔到垃圾桶里了。不过要说明一点,方案1作为计算量最少的方案,在一些类似小小兵团这种多人物阵型的游戏中还是很重要的。只是在人少的情况下,为了视觉的舒适,我们菜肴探索方案2、3这一类方案。

其次,以上三种方案对于渐进模式,都存在失真的可能。一旦旋转角过大而移动速度不足,则人物移动当中的重叠等就变得不可避免。因而在上述的几种方案的基础上,还需要一些其他的设计来保证人物移动的真实感。

那么我在项目中如何实现?

现有项目基本采用方案3。但是对于我们的项目而言,方案3也仅仅是第一层。首先需要明确的就是我们的阵型并非单纯的一字长蛇阵,而是多种阵型,但是基本目标都是实现主角们按照阵型向前移动并转向。因此我们套用了方案3作为阵型的基本模型。在方案3之上,我们再嵌套阵型进去。比如我们的“双纵阵”,便是主角们排成两列进行移动。这种情况下,我们就按照方案3的思想创造出n/2个节点,然后将阵型当中的每2个点划归进1个节点之中。这样,当节点移动时,每个点就根据所属节点的位置与角度以及固定偏移量,计算出该点的最终位置,然后向最终位置平滑移动。

时间: 2024-10-09 10:03:07

游戏中的阵型移动分析的相关文章

Dota 游戏中的攻击与伤害分析

摘要:在上一篇文章中分析了物理攻击和护甲的攻防分析,但是忽略了英雄对战里面一个很重要的角色--技能攻击.实际上,除了少数后期英雄可以直接靠平砍(即物理攻击)杀人外,大部分英雄尤其是智力英雄还是要靠技能收割人头的.技能的使用也是评价一个玩家水平高低的主要指标.在本文中,我们就技能进行分析. 关键字:技能攻击 魔抗 护甲 伤害类型 攻击类型 Dota中的攻击类型共有普通攻击.穿刺攻击.攻城攻击.混乱攻击.英雄攻击和法术攻击6种.除了法术攻击,其他的统称为物理攻击.然而我们只考虑英雄的话,只有英雄攻击

cocos2d-x与ios内存管理分析(在游戏中减少内存压力)

Cocos2d-x与ios内存管理分析(在游戏中减少内存压力) 猴子原创,欢迎转载.转载请注明: 转载自Cocos2D开发网--Cocos2Dev.com,谢谢! 年 原文地址: http://www.cocos2dev.com/?p=281 注:自己以前也写过Cocos2d-x如何优化内存的使用,以及内存不足的情况下怎么处理游戏.今天在微博中看到有朋友介绍了下内存,挺详细的.不知道是谁写的,我记录下. 一,iOS与图片内存 在iOS上,图片会被自动缩放到2的N次方大小.比如一张1024*102

漫谈游戏中的人工智能

写在前面   今天我们来谈一下游戏中的人工智能.当然,内容可能不仅仅限于游戏人工智能,还会扩展一些其他的话题. 游戏中的人工智能,其实还是算是游戏开发中有点挑战性的模块,说简单点呢,是状态机,说复杂点呢,是可以帮你打开新世界大门的一把钥匙.有时候看到知乎上一些可能还是前公司同事的同学的一些话,感觉还是挺哭笑不得的,比如这篇:http://zhi.hu/qu1h,吹捧机器学习这种玄学,对游戏开发嗤之以鼻.我只能说,技术不到家.Vision不够,这些想通过换工作可培养不来. 这篇文章其实我挺早就想写

竖屏小游戏--喵星战争源代码分析【完整】

 转载请注明出处:http://blog.csdn.net/oyangyufu/article/details/26942311 源代码地址:http://download.csdn.net/detail/oyangyufu/7409593 Ccp文件介绍: GameMenuScene.cpp游戏主菜单 GameMainScene.cpp游戏主页面 GameObjHero.cpp主角 GameHeroBullet.cpp主角的子弹 GameObjEnemy.cpp敌人 GameEnemyBull

关于在cocos2dx中继承Sprite的分析与技巧

本文章特指使用C++作为编程语言,基于cocos2dx游戏引擎开发游戏. 在cocos2dx中,sprite作为精灵类是使用最为频繁的类,与其它类相比,如:Node, Layer或Scene,Sprite最大的不同是它包含一个纹理,通过OpenGL的渲染,在游戏中呈现出来.游戏中的主角,怪物,背景,或是精灵的血条等都是通过Sprite来实现的. 在cocos2dx中,关于创建Sprite的类,根据输入参数的不同有以下几个工厂函数, static Sprite* create() static S

游戏中水的渲染技术系列一

笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解>电子工业出版社等. CSDN视频网址:http://edu.csdn.net/lecturer/144 水的渲染一直是图形学需要解决的问题,网上也有很多关于这方面的技术实现,本博客的系列文章也是给读者做一个总结,本篇博客主要介绍用傅里叶变换算法实现的水反射,也是一种假反射效果,目的是优

让子弹多飞一会儿——谈谈游戏中的弹道(转)

电子游戏/电脑游戏发展已经有几十年了.很多老玩家们都是小时候从街机厅开始玩游戏的.转眼到了2010年,今天已经是网络游戏的天下.街机厅一个个不是关了门,就是变成了暗地里的赌博厅,网吧则在城市中遍地生根发芽.如今走进网吧,不是WOW就是天龙.DNF.人人戴着耳机,专注屏幕,没有了街机厅的那种喧闹,那种1元钱在街机厅混一个下午,一个牌子把<皎皎皎>复关6遍的日子已经一去不复返了.当然,时代在发展,网游从某种角度来说战胜了单机,也是因为有他得天独厚的优势.在网游中,社交被大大强化了.人们可以在游戏中

游戏中使用圆弧地图的坐标设置问题(Cocos2dx 2.2.2)

这一篇为大家介绍下怎样解决在游戏中使用圆弧形地图所带来的坐标设置问题.有错误的地方希望大家指出来,谢谢!先上一个地图的效果图,图中的灰色区域就是我们需要的地图部分,这里设置的正好是半圆,不是半圆的类似处理: 图1 一 , 分析 可以看到图中显示的屏幕部分只会同时显示地图的一部分,如果直接按照普通坐标系直接来计算,那么在往地图上添加角色或者其他的物件时设置坐标会非常不直观,而且就算添加好了,一旦到了计算角色的位置移动计算起来就非常麻烦.所以我们必须得建立一个新的坐标,当我们使用新的坐标之后,事先写

游戏直播平台竞品分析(必看干货)

以下是我朋友JJ(张俊杰)原创文章 游戏直播平台竞品分析(移动端) 斗鱼.熊猫.虎牙 分析基于iOS客户端版本:斗鱼V2.450. 熊猫V2.2.6.1582.虎牙V4.4.0 市场分析 游戏直播作为直播行业战火的开端可以说毫不为过,随着游戏行业与直播行业规模也不断攀升,游戏直播的规模也大幅增长,找到一个艾瑞发布的数据如下. 同时,随着网络设备与游戏设备等的普及,用户规模也经历了初创.沉淀.爆发几个时期,下面也是出自艾瑞的用户数据. 伴随着用户规模的扩大,游戏直播平台的泛娱乐化也成为了一大趋势.