Exemplo n.º 1
0
        // 기존 Movable 일시 중지, 새로운 Movable 생성해서 넉백 이동
        private IEnumerator DecelerationProcess(Trigger trigger)
        {
            List <Movable> moves = target.GetOperableList <Movable>();

            if (moves != null)
            {
                foreach (var move in moves)
                {
                    move.state.SetState(MultiState.EStateType.KNOCKBACK, true);
                }
            }

            Actor.ERotateTo originRotateTo = target.rotateTo;

            MovableStraight knockbackMove = target.gameObject.AddComponent <MovableStraight>();

            target.rotateTo = Actor.ERotateTo.NONE;

            float currentSpeed = speed;

            while (currentSpeed > 0f && deceleration > 0f)
            {
                knockbackMove.speed = currentSpeed;
                currentSpeed       -= deceleration * Time.fixedDeltaTime;

                yield return(new WaitForFixedUpdate());
            }

            target.rotateTo     = originRotateTo;
            knockbackMove.speed = 0f;

            GameObject.Destroy(knockbackMove);

            if (moves != null)
            {
                foreach (var move in moves)
                {
                    move.state.SetState(MultiState.EStateType.KNOCKBACK, false);
                }
            }
        }
Exemplo n.º 2
0
 public override IEnumerator PreFire()
 {
     originRotateTo = owner.rotateTo;
     owner.rotateTo = Actor.ERotateTo.TARGET;
     yield break;
 }