在游戏中要设置人物的AI可以使用状态模式(好像状态模式又有点类似于之前用过的桥接模式,后面有时间在比较一下)
!
首先可以看下状态模式的类图
然后这是参照游戏设计模式书画出来的游戏AI的状态图,状态和人物可以自由扩展,而不会像使用switch语句一样去修改内部代码,遵循了开闭原则。
说明:
IAIState:状态的接口,里面的Update方法由子类进行实现,然后在ICharacter类里面进行调用
IdleState,MoveState:不同的状态,需要几个加几个,这里我制作时因为不同的人物,在同一个状态可能会有不同的表现(比如说同样是Idle状态,小怪的Idle和boss的不一样,动画也不一样),本来每一个状态下面又细分一个不同人的状态,但感觉会更复杂,所以暂时决定采用多写几个类,就不分子类了(因为人物不是很多,如果人物多的话感觉再细分一下可能会更好一点,有待实践)。
ICharacterAI:调用状态的接口,里面的Update方法用来调用状态的Update方法
EnemyAI:不同的人物进行调用,假如还有其他角色可以多扩展其他角色。
ICharacter:总的角色类,里面进行各种功能的组装,用SetAI方法选择AI
暂时先这些,具体实现慢慢来。