private void OnPositionChanged(Vector newPos) { if (startPos.IsZero()) { startPos = newPos; } Vector direction = newPos - startPos; if (direction.Length >= ScreenPosition.UP_DIRECTION_LENGTH) { ScreenPosition.SetUpDirection(direction); Character.PositionChanged -= OnPositionChanged; Character.PositionChanged -= OnPositionChangedMoveBack; Character.PositionChanged += OnPositionChangedMoveBack; DoStateAction(EInitState.MoveBack); } }