public void PerformAction(Action action)
    {
        switch (action)
        {
        case Action.IDLE:
        {
            ResetController();
            break;
        }

        case Action.MOVE_LEFT: {
            MoveTowardsDirection(-1);
            break;
        }

        case Action.MOVE_RIGHT: {
            MoveTowardsDirection(1);
            break;
        }

        case Action.MOVE_FORWARD:
        {
            MoveTowardsDirection(goals.GetForwardDirection());
            break;
        }

        case Action.CHANGE_DIRECTION:
        {
            goals.ToggleForwardDirection();
            break;
        }

        case Action.AIM_TARGET: {
            AimAtPoint(goals.GetTargetPosition());
            break;
        }

        case Action.RELEASE_FIRE_TARGET: {
            ReleaseFireAtPoint(goals.GetTargetPosition());
            break;
        }

        case Action.JUMP:
        {
            TapJump();
            break;
        }

        case Action.PRESS_JUMP:
        {
            PressJump();
            break;
        }

        case Action.RELEASE_JUMP:
        {
            ReleaseJump();
            break;
        }

        case Action.FIRE:
        {
            virtualController.TapFire();
            break;
        }

        case Action.PRESS_FIRE:
        {
            PressFire();
            break;
        }

        case Action.RELEASE_FIRE:
        {
            virtualController.ReleaseFire();
            break;
        }

        case Action.PICK_RANDOM_ROSE_DIRECTION:
        {
            goals.PickRandomRoseDirection();
            break;
        }

        case Action.PICK_RANDOM_ROSE_DIRECTION_TOWARDS_TARGET:
        {
            goals.PickRandomRoseDirection();
            Vector3 targetPosition = goals.GetTargetPosition();

            bool towardsTarget = false;
            if (targetPosition != null)
            {
                while (towardsTarget == false)
                {
                    goals.PickRandomRoseDirection();
                    AimRoseDirection();
                    Vector3 vecToTarget = targetPosition - this.transform.position;
                    if (Mathf.Sign(virtualController.GetHorAxis()) == Mathf.Sign(vecToTarget.x))
                    {
                        towardsTarget = true;
                    }
                    if (Mathf.Sign(virtualController.GetVertAxis()) == Mathf.Sign(vecToTarget.y))
                    {
                        towardsTarget = true;
                    }
                }
            }
            break;
        }

        case Action.MOVE_ROSE_DIRECTION:
        {
            AimRoseDirection();
            break;
        }

        default:
            ResetController();
            break;
        }
    }
예제 #2
0
 void VerticalInput()
 {
     vertAxis = virtualController.GetVertAxis();
 }