Пример #1
0
    private void DoScan()
    {
        KillHolograms ();
        //Delete old ones

        //Do a fresh scan, and create new ones
        GameObject[] found = FindGameObjectsInsideRange(sensorTarget.transform.position,scanRange);
        foreach(GameObject detectedObj in found)
        {
            if(detectedObj != this && detectedObj.tag == "robot") //&& detectedObj.tag != "hologram")
            {
                GameObject clone;

                //if(detectedObj.tag != "robot" )
                //	clone = Instantiate (detectedObj) as GameObject;
                //if(detectedObj.tag == "robot" )
                //{
                    //clone = Instantiate (Resources.Load("RobotProject")) as GameObject;
                    clone = CompoundObjectFactory.Create("Robot",CompoundObjectFactory.COType.Avatar);

                    clone.name = "Avatar";
                //}

                clone.tag = "hologram";
                foreach(MonoBehaviourThink com in clone.GetComponents<MonoBehaviourThink>())
                    com.enabled = false;

                clone.GetComponent<Collider>().enabled = false;
                clone.transform.parent = this.transform; // link the hologram to the display
                SensorHologram holo = new SensorHologram(detectedObj,clone);

                Vector3 scaleVec = detectedObj.transform.localScale;
                scaleVec = new Vector3(scaleVec.x * scale,scaleVec.y*scale,scaleVec.z*scale);
                clone.transform.localScale = scaleVec;

                holograms.Add(holo);
                AdjustHologram(holo,true);
            }
        }
        //sensorTarget = null;
    }
Пример #2
0
    private void AdjustHologram(SensorHologram holo,bool force)
    {
        //clone.transform.position = new Vector3(0f,0f,0f);
        //clone.transform.position = this.gameObject.transform.position + displayOffset;
        //Find minimized velocites and scale
        GameObject detectedObj = holo.reading;
        if (detectedObj == null) //Whatever it died
                        return;
        GameObject clone = holo.hologram;
        Vector3 objv = new Vector3 (0, 0, 0);
        Vector3 shpv = new Vector3 (0, 0, 0);
        if(detectedObj.GetComponent<Rigidbody>() != null)
        {
            objv = detectedObj.GetComponent<Rigidbody>().velocity;
            shpv = this.transform.parent.parent.parent.gameObject.GetComponent<Rigidbody>().velocity;
        }
        Vector3 shpr = this.gameObject.transform.rotation.eulerAngles;

        Vector3 relVel;
        Vector3 newPos;
        Vector3 newVec;

        //Find hologram pos
        newPos = (detectedObj.transform.position - this.gameObject.transform.position) * scale;

        //Find new velocity
        objv = new Vector3(objv.x * scale,objv.y*scale,objv.z*scale);
        shpv = new Vector3(shpv.x * scale,shpv.y*scale,shpv.z*scale);
        relVel = Quaternion.Euler(shpr.x, shpr.y, shpr.z) * (objv - shpv);
        newVec = this.transform.parent.parent.parent.gameObject.GetComponent<Rigidbody>().velocity+relVel;

        Quaternion ea = this.gameObject.transform.rotation;
        Quaternion cEa = detectedObj.transform.rotation;
        //clone.transform.rotation = Quaternion.Euler( cEa.x - ea.x, cEa.y- ea.y, cEa.z - ea.z);
        //relVel = Quaternion.Euler(shpr.x, shpr.y, shpr.z) * relVel;

        clone.transform.localPosition = newPos;
        clone.transform.rotation =  ea*cEa ;
        //clone.rigidbody.velocity = newVec;
        //clone.rigidbody.angularVelocity = detectedObj.rigidbody.angularVelocity;
    }