// 기존 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); } } }
public override IEnumerator PreFire() { originRotateTo = owner.rotateTo; owner.rotateTo = Actor.ERotateTo.TARGET; yield break; }