コード例 #1
0
ファイル: MovementController.cs プロジェクト: PyCee/Dodgeball
    void Update()
    {
        float   x = Input.GetAxis("Horizontal");
        float   z = Input.GetAxis("Vertical");
        Vector3 flatCameraForward = Camera.main.transform.forward;

        flatCameraForward.y = 0.0f;
        Vector3 flatCameraRight = Camera.main.transform.right;

        flatCameraRight.y = 0.0f;
        Vector3 controlledMovement = flatCameraForward.normalized * z + flatCameraRight.normalized * x;

        controlledMovement *= moveSpeed;


        if (isActive)
        {
            switch (movementState)
            {
            case MovementState.Standard:
                TurnToDir(controlledMovement.normalized);
                movement = new Vector3(controlledMovement.x, movement.y, controlledMovement.z);

                if (iKThrowController.GetThrowState() != IKThrowController.ThrowState.None)
                {
                    movementState = MovementState.Aiming;
                }
                break;

            case MovementState.Aiming:
                if (iKThrowController.GetTarget())
                {
                    Vector3 targetDir     = iKThrowController.GetTarget().position - transform.position;
                    Vector3 flatTargetDir = new Vector3(targetDir.x, 0.0f, targetDir.z);
                    TurnToDir(flatTargetDir.normalized);
                }
                movement = new Vector3(controlledMovement.x, movement.y, controlledMovement.z);

                if (iKThrowController.GetThrowState() == IKThrowController.ThrowState.None)
                {
                    movementState = MovementState.Standard;
                }
                break;
            }
            movement += Physics.gravity * Time.deltaTime;
            cc.Move(movement * Time.deltaTime);
        }
    }
コード例 #2
0
    void Update()
    {
        if (Input.GetMouseButtonDown(0) &&
            ikThrowController.GetThrowState() == IKThrowController.ThrowState.None &&
            ikCatchController.HasCaughtBall())
        {
            ikThrowController.StartAim();
            ikThrowController.SetThrowPathState(IKThrowController.ThrowPathState.Straight);
            playerCameraController.UseAimCamera();
        }
        else if (Input.GetMouseButtonUp(0) && ikThrowController.IsAiming())
        {
            // Throw a ball if the bot has one
            ikThrowController.ReadyThrow();
            playerCameraController.StopUsingAimCamera();
            animator.SetTrigger("Throw");
        }

        if (ikThrowController.IsAiming())
        {
            if (Input.GetKeyDown(KeyCode.A))
            {
                ikThrowController.MoveTargetLeft();
            }
            if (Input.GetKeyDown(KeyCode.D))
            {
                ikThrowController.MoveTargetRight();
            }
            if (Input.GetKeyDown(KeyCode.W))
            {
                //target = GetNextTarget();
            }
            if (Input.GetKeyDown(KeyCode.S))
            {
                //target = GetNextTarget(false);
            }
            if (Input.GetKeyDown(KeyCode.Q))
            {
                ikThrowController.SetThrowPathState(IKThrowController.ThrowPathState.Straight);
            }
            if (Input.GetKeyDown(KeyCode.E))
            {
                ikThrowController.SetThrowPathState(IKThrowController.ThrowPathState.CurveFromLeft);
            }
            if (Input.GetKeyDown(KeyCode.R))
            {
                ikThrowController.SetThrowPathState(IKThrowController.ThrowPathState.CurveFromAbove);
            }
            if (Input.GetKeyDown(KeyCode.F))
            {
                ikThrowController.SetThrowPathState(IKThrowController.ThrowPathState.CurveFromRight);
            }
        }

        if (Input.GetMouseButtonDown(1))
        {
            // Supply the bot with a new ball
            Vector3 ballPos = transform.position + transform.forward * 0.5f;
            ballPos.y += 1.5f;
            GameObject throwable = Instantiate(ballPrefab, ballPos, Quaternion.identity);
        }
    }