예제 #1
0
        public override void process(BossSM fsm)
        {
            if (fsm.IsAttacked)
            {
                float   deltaX;
                Vector3 pos = fsm.unit.transform.position;
                if (fsm.doesLookRight())
                {
                    deltaX = 0.5f;
                }
                else
                {
                    deltaX = -0.5f;
                }
                fsm.unit.transform.position = new Vector3(pos.x + deltaX, pos.y, pos.z);
                fsm.unit.Attack();
            }
            if (fsm.IsAttackEnd)
            {
                switch (fsm.CurPhase)
                {
                case 0:
                    fsm.ChangeState(fsm.chaseState);
                    break;

                case 1:
                    break;

                case 2:
                    break;
                }
            }
        }
예제 #2
0
        public override void process(BossSM fsm)
        {
            if (fsm.unit.HorizonSpeed == 0)
            {
                fsm.anim.SetSpeed(1);
                fsm.anim.ChangeAnim(BossAnim.Idle);
            }
            else
            {
                fsm.anim.SetSpeed(fsm.unit.HorizonSpeed / fsm.unit.stat.moveSpeed);
                fsm.anim.ChangeAnim(BossAnim.Walk);
            }

            if (fsm.CheckAttackable())
            {
                fsm.ChangeState(_attackList[fsm.CurPhase][_curAttackOrder]);
                _curAttackOrder++;
                return;
            }

            fsm.SetDirection(fsm.unit.Target.transform.position.x > fsm.unit.transform.position.x);

            if (fsm.doesLookRight())
            {
                fsm.unit.Move(1);
            }
            else
            {
                fsm.unit.Move(-1);
            }
        }