Ejemplo n.º 1
0
    public static float Distance_To_Collider(Ray ray, Collider collider, float distance)
    {
        Vector3 target = collider.transform.position;

        float distance_to_line = Linear_Algebra.Distance_To_Line(ray, target);

        if (distance_to_line < 0.0f)
        {
            return(float.MaxValue);
        }

        float hypotneuse = Vector3.Distance(ray.origin, target);

        Vector3 closest = ray.origin + ray.direction * Mathf.Sqrt(hypotneuse * hypotneuse + distance_to_line * distance_to_line);

        RaycastHit hit;

        Vector3 direction = (target - closest).normalized;

        direction.Normalize();

        if (!direction.Equals(Vector3.zero) && collider.Raycast(new Ray(closest, direction), out hit, distance_to_line))
        {
            return(hit.distance);
        }

        return(float.MaxValue);
    }
Ejemplo n.º 2
0
    //beaver beer
    //c**t cocktails
    //g-spot spirits
    //womb wiskey
    //vaginal vodka
    //crotch scotch
    //slit sake

    //cervix cider
    //fanny fruitwine
    //hymen
    //labia lager

    //ovarian absinthe
    //placenta
    //snatch
    //uterus tequila

    void Update()
    {
        if (this.isActive && base.isReady)
        {
            Ray ray = new Ray(this.transform.position, this.transform.forward);

            RaycastHit hit;

            //raycast first
            if (Physics.Raycast(ray, out hit, this.myRange, Bitwise.Off(1, 8)))
            {
                this.myTarget = hit.collider;
            }
            else
            {
                this.myTarget = null;

                float closest = float.MaxValue;

                foreach (var collider in UnityEngine.Object.FindObjectsOfType <Collider>())
                {
                    if (Logic <int> .Neither(collider.gameObject.layer, 1, 8))
                    {
                        float distance = Linear_Algebra.Distance_To_Collider(ray, collider, closest);

                        if (distance < closest)
                        {
                            closest       = distance;
                            this.myTarget = collider;
                        }
                    }
                }
            }
        }
    }