Exemple #1
0
    // use "LateUpdate to ensure that we get the value for velocityVect.
    void LateUpdate()
    {
        Debug.Log("Drawing Ballistic Arc");
        // we know this is highly inefficient but wanted to get it working asap
        Slingshot ss = gameObject.transform.parent.GetComponent <Slingshot>() as Slingshot;
        PullZone  pz = ss.GetComponentInChildren <PullZone>();

        if ((ss.slingshotHand == "left" && pz.loadedObject != null) ||
            (ss.slingshotHand == "right" && pz.loadedObject != null))
        {
            Vector3 velocityVect = ss.CalculateV();
            lr.positionCount = (int)(timeMaximum / timeStep);

            Vector3 currPos = transform.position;

            int i = 0;             // index


            for (float t = 0.0f; t < timeMaximum; t += timeStep)
            {
                lr.SetPosition(i, currPos);


                // project target impact point
                RaycastHit impact;

                if (Physics.Raycast(currPos, velocityVect, out impact, velocityVect.magnitude, layerMask))
                {
                    lr.positionCount = i + 2;
                    lr.SetPosition(i + 1, impact.point);

                    if (impactCircle != null)
                    {
                        if (impactCircleInstance != null)
                        {
                            impactCircleInstance.transform.position = impact.point;
                        }
                        else
                        {
                            impactCircleInstance = Instantiate(impactCircle, impact.point, Quaternion.identity) as GameObject;
                            impactCircleInstance.transform.parent = gameObject.transform;
                        }
                    }
                    break;
                }
                // update position
                currPos = currPos + (velocityVect * timeStep);

                // account for gravity on arc
                velocityVect += (Physics.gravity * timeStep);
                i++;
            }
        }
    }