public static PatrolWalkAction GetWalkAction() { PatrolWalkAction walk = CreateInstance <PatrolWalkAction>(); walk.state = PatrolState.forward; return(walk); }
public void SSActionEvent(SSAction source, SSActionEventType events = SSActionEventType.Completed, int type = 0) { //巡逻时触发,设置目标为下一个地点 if (type == 0) { PatrolWalkAction walk = (PatrolWalkAction)source; switch (walk.GetPatrolState()) { case PatrolState.forward: TurnLeft(walk); break; case PatrolState.left: TurnBackward(walk); break; case PatrolState.backward: TurnRight(walk); break; case PatrolState.right: TurnForward(walk); break; } } //追踪玩家时触发,玩家死亡,游戏结束 if (type == 1) { SSDirector.getInstance().currentSceneController.loseGame(); } }
//巡逻兵 patrol 开始巡逻 public void PatrolAround(Patrol patrol) { patrols[patrol.getIndex()] = patrol; //默认以woal状态开始巡逻 walk[patrol.getIndex()] = PatrolWalkAction.GetWalkAction(); //状态设置为巡逻 state[patrol.getIndex()] = 0; Debug.Log("start patrol"); this.RunAction(patrol.getGameObject(), walk[patrol.getIndex()], this); }
//向后巡逻 public void TurnBackward(PatrolWalkAction source) { source.SetPatrolState(PatrolState.backward); source.target += Vector3.back * Random.Range(15, 25); }
//向前巡逻 public void TurnForward(PatrolWalkAction source) { source.SetPatrolState(PatrolState.forward); source.target = source.initPos; }
//向右巡逻 public void TurnRight(PatrolWalkAction source) { source.SetPatrolState(PatrolState.right); source.target += Vector3.right * Random.Range(15, 25); }
//向左巡逻 public void TurnLeft(PatrolWalkAction source) { source.SetPatrolState(PatrolState.left); source.target += Vector3.left * Random.Range(15, 25); }