Ejemplo n.º 1
0
    public void ReleaseBall()
    {
        // Ran as an animation event

        // Apply throw force to the ball
        Quaternion towards = transform.rotation;

        if (target != null)
        {
            Transform rHand = animator.GetBoneTransform(HumanBodyBones.RightHand);
            towards = Quaternion.LookRotation(target.position - rHand.position);
        }
        Transform thrownBall = ikCatchController.caughtBall;

        ikCatchController.ReleaseCaughtBall();


        ThrownController ballThrownController = thrownBall.gameObject.AddComponent <ThrownController>() as ThrownController;

        Vector3   beginningPoint = thrownBall.position;
        Vector3   endPoint       = target.position;
        Vector3   direction      = endPoint - beginningPoint;
        Vector3   tmpPoint       = beginningPoint + direction * 0.9f;
        Vector3   controlPoint;
        ThrowPath throwPath = null;

        switch (throwPathState)
        {
        case ThrowPathState.Straight:
            throwPath = new StraightPath(beginningPoint, endPoint, throwSpeed);
            break;

        case ThrowPathState.CurveFromRight:
            controlPoint = tmpPoint + (Quaternion.AngleAxis(-90.0f, direction.normalized) * Vector3.up * 3);
            throwPath    = new CurvePath(beginningPoint, controlPoint, endPoint, throwSpeed);
            break;

        case ThrowPathState.CurveFromLeft:
            controlPoint = tmpPoint + (Quaternion.AngleAxis(90.0f, direction.normalized) * Vector3.up * 3);
            throwPath    = new CurvePath(beginningPoint, controlPoint, endPoint, throwSpeed);
            break;

        case ThrowPathState.CurveFromAbove:
            controlPoint = tmpPoint + (Quaternion.AngleAxis(0.0f, direction.normalized) * Vector3.up * 3);
            throwPath    = new CurvePath(beginningPoint, controlPoint, endPoint, throwSpeed);
            break;

        default:
            print("Unrecognized ThrowPathState");
            break;
        }
        ballThrownController.SetThrowPath(throwPath);

        RemoveTarget();

        throwState = ThrowState.None;
    }
Ejemplo n.º 2
0
 public void SetThrowPath(ThrowPath t)
 {
     throwPath = t;
 }