前言
NPC
是游戏中很重要的一部分,功能复杂,行为智能的NPC
可以给玩家带来更加优秀的游戏体验,我们可以通过对NPC
的行为模式的设计来理解有限状态机
而对于游戏开发者而言,要实现一个功能完备,逻辑清晰的AI状态图可不是一件简单的事情,如果没有前期的完备的设计,以及正确的编程方法,会在开发过程中产生很多难以解决的问题
一,Switch Case的使用:
在游戏开发过程中,你想要实现一个NPC
的一些功能,比如静止与攻击,当玩家靠近NPC
,NPC
就会攻击玩家,编写一段逻辑代码来实现这样的一个效果:
if(玩家靠近)
NPC攻击玩家代码
if(玩家远离)
NPC静止代码
在NPC
行为状态比较简单时,我们可以通过if判断来实现这样的效果
但是当NPC
的状态增加时呢,比如说有静止、攻击、追击、巡逻这些状态时呢,我们所有逻辑在使用if else
实现这样的转换就会使得逻辑变得很难理解,这个时候就可以使用Switch case
配合枚举 来进行状态的转化:
public enum State
{
idle,
patrol,
attact,
pursuit,
}
public class FishRod : MonoBehaviour
{
State state=new State();
public void Test()
{
switch (state)
{
case State.idle:
//idle状态下的NPC逻辑代码
break;
case State.patrol:
//巡逻状态下NPC逻辑代码
break;
case State.attact:
//攻击状态下的NPC逻辑代码
break;
case State.pursuit:
//追击状态下的NPC逻辑代码
break;
}
}
}
很明显,这样逻辑就会清晰很多,只需要在不同状态下修改state
对应的枚举类型即可,这样可以将判断代码与执行代码进行分离
通过Switch case
结合枚举可以很好的处理NPC
行为状态的逻辑