public override void process(KoboldSM fsm) { if (fsm.unit.HorizonSpeed == 0) { fsm.anim.SetSpeed(1); fsm.anim.ChangeAnim(KoboldAnim.Idle); } else { fsm.anim.SetSpeed(fsm.unit.HorizonSpeed / fsm.unit.stat.moveSpeed); fsm.anim.ChangeAnim(KoboldAnim.Run); } fsm.SetDirection(_targetPosition.x > fsm.transform.position.x); if (fsm.CheckAttackable()) { fsm.ChangeState(fsm.fightState); return; } bool checkVeiw = fsm.CheckView(); fsm.light.SetActive(checkVeiw); if (checkVeiw) { fsm.light.SetActive(true); _targetPosition = fsm.unit.Target.transform.position; _returning = false; _returnTime = 0; } fsm.unit.Move(_targetPosition.x > fsm.transform.position.x ? 1 : -1); if (fsm.unit.NotMovable) { _returnTime += Time.deltaTime; } if (Mathf.Abs(_targetPosition.x - fsm.transform.position.x) <= 0.1) { if (_returning) { fsm.ChangeState(KoboldSM.idleState); } else { fsm.unit.Idle(); _returnTime += Time.deltaTime; } } if (_returnTime > 5) { _returnTime = 0; Debug.Log("Kobold returning start"); _targetPosition = _originalPosition; _returning = true; } }
public override void process(KoboldSM fsm) { _attackDelay += Time.deltaTime; if (_attackDelay > 3) { fsm.anim.ChangeAnim(KoboldAnim.Attack); _attackDelay = 0; } if (fsm.IsAttacked) { fsm.unit.Attack(); } fsm.SetDirection(fsm.unit.Target.transform.position.x > fsm.transform.position.x); if (!fsm.CheckAttackable()) { fsm.ChangeState(fsm.chaseState); } }