Пример #1
0
    void LeftClick()
    {
        Collider[] cols = Physics.OverlapSphere(transform.position, 1.5f);
        float      min  = 1000f;

        Vector3 closestPoint = Vector3.zero;

        GameObject o = null;

        foreach (Collider col in cols)
        {
            if (col.gameObject.name != "Trigger" && col.gameObject.tag != "Player")
            {
                Vector3 p = col.bounds.ClosestPoint(transform.position);
                float   d = (p - transform.position).sqrMagnitude;

                if (d < min)
                {
                    min          = d;
                    closestPoint = p;
                    o            = col.gameObject;
                }
            }
        }


        if (closestPoint == Vector3.zero)
        {
            return;
        }

        Vector3 dir = fwd.position - cam.position;

        GameObject obj = Instantiate(basicTentacle, Vector3.zero, Quaternion.identity) as GameObject;

        Tentacle t = obj.GetComponent <Tentacle> ();

        if (o.GetComponent <MeshPart> ())
        {
            MeshPart omp = o.GetComponent <MeshPart> ();

            t.origin       = omp.startPosition;
            t.customOrigin = true;
            t.startRadius  = omp.startRadius * 1.3f;
            t.direction    = dir.normalized;
        }
        else
        {
            t.origin    = transform.position;
            t.direction = dir.normalized;

            t.origin = closestPoint;
        }
        t.Go();
    }