2D自上而下的RPGanimation架构问题

我的精灵animation现在有问题了。 对于每个角色我都有不同的animation和序列,所以特定的射手可能会进行远程攻击,在这种攻击中,他只会播放一个animation并向敌人射出一支箭。 另一方面可能是近身攻击,在有animation的时候要靠近敌人,到达敌人时进行攻击animation,回到原来的位置,也有自己的animation。 而且我可以继续前进,也许可以像老板一样

正如你所看到的,对于各种各样的角色,有很多可能的animation序列。 我的问题是什么是最好的方式来编程我的游戏。 我是否应该有一个战斗机的基类,它拥有所有常见的方法,而且每个角色都具有自己的攻击序列? 因为这是我首先想到的,但我担心它的错误方法,因为我将有许多类做同样的序列。 或者,也许我应该创建一个序列基类,每个不同的animation序列将固定在这个类。 比在基地Battler类播放序列?

我正在使用SFML C ++开发游戏,现在这里是战斗屏幕的GIF,这样你就可以了解我的战斗是如何发生的。

我的比赛的战斗场面

攻击的animation和逻辑可以分解为单独的逻辑单元,然后通过数据文件进行sorting。 例如,你可能有这样的代码:

AdvanceBehavior(entity, target, speed) FallbackBehavior(entity, target, speed) SoundBehavior(entity, sound_id) AnimateBehavior(entity, anim_id, speed) 

然后你可以有一个数据文件来指定攻击的顺序:

 { { 'name': "fire arrow", 'sequence': [ {'id': 'sound', 'sound_id': 'twang.wav'}, {'id': 'animate', 'anim_id': 'elf_fire_arrow.anim', 'speed': 1.0}, ] }, { 'name': "fast strike", 'sequence': [ {'id': 'animate', 'anim_id': 'elf_jump.anim', 'speed': 2.0}, {'id': 'sound', 'sound_id': 'jump.wav'}, {'id': 'advance', 'speed': 5.0}, {'id': 'animate', 'anim_id': 'elf_smack.anim', 'speed': 2.0}, {'id': 'sound', 'sound_id': 'thwack.wav'}, {'id': 'fallback', 'speed': 1.0}, {'id': 'animate', 'anim_id': 'elf_jump.anim', 'speed': 1.0}, ] } } 

你的代码应该包含逻辑。 你的数据应该包含configuration。

我是否应该有一个战斗机的基类,它拥有所有常见的方法,而且每个角色都具有自己的攻击序列?

如果你有很多战斗types的话,我认为你不一定希望他们全部成为他们的单独的课程,否则的话,他们是非常相似的。 一种方法是让他们都是一个单一的types,Battler,与能力和animation和精灵名单和什么 – 不附加在他们建设后。

而不是使用单独的子类的构造函数来构建不同types的战斗者,而是可以创建简单的函数来为您构建合适的战斗者 。 例如:

 Battler createBattlerType1() { Battler battler; //Add animations, abilities, etc. return battler; } 

或者,也许我应该创建一个序列基类,每个不同的animation序列将是该类固有的。 比在基地Battler类播放序列?

在某种程度上,这听起来像是一个明智的做法,但是,我不认为你一定需要混合inheritance。 如果一个“animation序列”只是一个接一个地播放的animation列表,你甚至不一定需要为它创建一个新的数据types:你可以把它存储在数组或者std中: :向量。 然后,每个“battler”实例可以拥有自己的animation序列列表。