Exemplo n.º 1
0
    private void RaycastBeam()
    {
        Ray        beamRay = new Ray(transform.position, transform.forward);
        RaycastHit beamHit;

        if (raycaster.ParabolicRaycast(out beamHit, transform.position, transform.eulerAngles, raycastTravelDistance, raycastVelocity, raycastSegments))
        {
            beamRenderer.enabled = true;

            beamRenderer.SetVertexCount(raycastSegments + 2);
            beamRenderer.SetPositions(ParabolicRaycaster.ParabolicPointsList(transform.position, transform.eulerAngles, beamHit.distance, raycastVelocity, raycastSegments));
            beamRenderer.SetPosition(raycastSegments + 1, hitPosition);

            if (beamHit.normal.y > 0.01f) //If the surface has a positive slope
            {
                hitPosition   = beamHit.point;
                validTeleport = true;

                PlaceTargetMarker(hitPosition, beamHit.normal);
            }
            else
            {
                hitPosition   = beamHit.point;
                validTeleport = false;

                RemoveTargetMarker();
                //Draw an invalid teleport marker
            }
        }
        else
        {
            beamRenderer.enabled = false;
            hitPosition          = Vector3.zero;
            validTeleport        = false;

            RemoveTargetMarker();
        }
    }