protected virtual void ShootBall()
    {
        characterAudio.loop = true;
        characterAudio.clip = null;
        characterAudio.Stop();

        characterRb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse);
        ball.transform.position = characterRb.transform.position + (lookingRight ? new Vector3(0.45f, 1.8f, 0.01f) : new Vector3(-0.45f, 1.8f, 0.01f));

        if (transform.position.y >= jumpLimit)
        {
            characterAudio.PlayOneShot(jumpSound, 0.5f);

            Rigidbody ballRb = ball.GetComponent<Rigidbody>();
            //BallController ballController = ball.GetComponent<BallController>();

            Vector3 distanceVec3 = hoop.transform.position - ball.transform.position;
            ball.transform.parent = null;
            ballController.EnableRagdoll();
            //ballRb.AddForce((Vector3.up * 8 + Vector3.right * 5) * transform.position.y, ForceMode.Impulse);
            ballRb.AddForce((distanceVec3 + Vector3.up * 6), ForceMode.Impulse);
            hasBall = false;
            ballController.setIsCarried(false);
        }
        
    }
    public virtual void Reset()
    {
        GetComponent<Rigidbody>().velocity = Vector3.zero;
        characterAudio.loop = true;
        characterAudio.clip = null;
        characterAudio.Stop();

        transform.position = startPosition;
        transform.rotation = Quaternion.Euler(startRotation);

        BallController ballController = ball.GetComponent<BallController>();

        ball.transform.parent = null;
        ballController.EnableRagdoll();

        hasBall = false;
        ballController.setIsCarried(false);

        if (transform.rotation.y < 0)
        {
            lookingRight = false;
        } else
        {
            lookingRight = true;
        }

        isGameActive = true;
    }
    //protected void ChaseBall()
    //{
    //    float distanceVecx = Math.Round(ball.transform.position.x - transform.position.x, 1) == 0.0f ? 0.0f : ball.transform.position.x - transform.position.x > 0.0f ? 1.0f : -1.0f;
    //    float distanceVecz = Math.Round(ball.transform.position.z - transform.position.z, 1) == 0.0f ? 0.0f : ball.transform.position.z - transform.position.z > 0.0f ? 1.0f : -1.0f;

    //    if (distanceVecx < 0 && lookingRight)
    //    {
    //        transform.RotateAround(transform.position, transform.up, 180.0f);
    //        lookingRight = false;
    //    } else if (distanceVecx > 0 && !lookingRight)
    //    {
    //        transform.RotateAround(transform.position, transform.up, 180.0f);
    //        lookingRight = true;
    //    }

    //        //Vector3 distanceVec3 = Vector3.right * distanceVecx + Vector3.forward * distanceVecz;
    //    Vector3 distanceVec3 = new Vector3(distanceVecx, 0, distanceVecz);
    //    transform.Translate(distanceVec3 * Time.deltaTime * 3, Space.World);

    //}


    protected void Pass()
    {
        characterAudio.loop = true;
        characterAudio.clip = null;
        characterAudio.Stop();

        //Vector3 distanceVec3 = teamMate.transform.position - transform.position;
        float directionForward = teamMate.transform.position.x > transform.position.x ? 1.0f: -1.0f;
        float directionUpward = teamMate.transform.position.z > transform.position.z ? 1.0f : -1.0f;

        float distanceVecx = Math.Abs(teamMate.transform.position.x - transform.position.x) < 8.0f ? (teamMate.transform.position.x - transform.position.x) : 8.0f;
        float distanceVecz = Math.Abs(teamMate.transform.position.z - transform.position.z) < 4.0f ? (teamMate.transform.position.z - transform.position.z) : 4.0f;

        Rigidbody ballRb = ball.GetComponent<Rigidbody>();
        BallController ballController = ball.GetComponent<BallController>();


        if (directionForward == 1.0f)
        {
            if (!lookingRight)
            {
                transform.RotateAround(transform.position, transform.up, 180f);
                lookingRight = true;
            }

        } else if (directionForward == -1.0f)
        {
            if (lookingRight)
            {
                transform.RotateAround(transform.position, transform.up, 180f);
                lookingRight = false;
            }
        }

        ball.transform.position = characterRb.transform.position + (directionForward == 1.0f ? new Vector3(0.55f, 1.2f, 0.01f) : new Vector3(-0.55f, 1.2f, 0.01f));

        ball.transform.parent = null;
        ballController.EnableRagdoll();

        Vector3 forceVec = new Vector3(directionForward * distanceVecx, 2.0f, directionUpward * distanceVecz) * 1.5f;
        ballRb.AddForce(forceVec,ForceMode.Impulse);
        hasBall = false;
        ballController.setIsCarried(false);
    }
Exemplo n.º 4
0
    protected override void ShootBall()
    {
        characterAudio.loop = true;
        characterAudio.clip = null;
        characterAudio.Stop();

        characterAudio.PlayOneShot(jumpSound, 0.5f);

        Rigidbody      ballRb         = ball.GetComponent <Rigidbody>();
        BallController ballController = ball.GetComponent <BallController>();

        Vector3 distanceVec3 = hoop.transform.position - ballRb.transform.position;

        ball.transform.parent = null;
        ballController.EnableRagdoll();
        //ballRb.AddForce((Vector3.up * 8 + Vector3.right * 5) * transform.position.y, ForceMode.Impulse);
        ballRb.AddForce((distanceVec3 + Vector3.up * 6), ForceMode.Impulse);
        hasBall = false;
        ballController.setIsCarried(false);
    }