Jump to content
Unity Insider Forum

sletsame Distance-abfrage


Aquana

Recommended Posts

Hallo,

Ich versuche über eine Script ein noch unbekannte Gameobject anzusprechen bzw wenn es von einem ray getroffen wird das es der noch leeren public Gameobject Stelle hinzugefügt wird.

Das klappt schon. Doch dann möchte ich die DIstance von dem aktuellen Objekt abgefragt wird.

    // Transform ist null weil es um unbekannte Gameobjecte geht
    public Transform other=null;
  
    float abstand;

    float länge=10;

   
    void Update()
    {
        //Starh wird ausgestrahlt
        RaycastHit hit;
        Debug.DrawRay(transform.position, transform.TransformDirection(Vector3.forward) * länge, Color.red);

        if (Physics.Raycast(transform.position,transform.TransformDirection(Vector3.forward),out hit,länge)&& hit.collider.tag.Equals("Player"))
        {

           

            
           //unbekannte Gameobject wird Transform zugefügt
            other = GameObject.FindWithTag("Player").transform;

            // frage die Distance ab
            float dist = Vector3.Distance(other.transform.position, transform.position);

            //schreibe die DIstance
            print(dist);
           
        }

      ;
       

Doch jetzt kommt das Problem. Obwohl das richtige Gameobject jetzt in der Spalte ist, wird anscheinend dennoch der Abstand von dem Object abgefragt was auch den gleichen namen hat (2* Sphere), das zuletzt in der Hierachy steht. Aber so wie ich das gemacht habe, dachte ich das das aktuelle Object angesprochen wurde und damit auch die Position. Mich würde eine Antwort darauf freuen warum das nicht so geht wie ich dachte.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi.

Ändere mal folgendes und probiere erneut.

RaycastHit hit;
Debug.DrawRay(transform.position, transform.TransformDirection(Vector3.forward) * länge, Color.red); 
if (Physics.Raycast(transform.position,transform.TransformDirection(Vector3.forward),out hit,länge) && hit.collider.tag.Equals("Player")){
	//unbekannte Gameobject wird Transform zugefügt
    //other = GameObject.FindWithTag("Player").transform;// Info: Entfernen! Man muss nicht danach suchen. 
	//Es kann aus der Raycast hit variable ausgelesen werden.
	
	other = hit.collider.transform // Nutze Das!

    // frage die Distance ab
	float dist = Vector3.Distance(other.transform.position, transform.position); 
    //schreibe die DIstance
    
	print(dist); // Info: Debug.print geht auch.
} 

Grüße

 

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

okay, danke. Dabei war ich der festen Überzeugung als ich auf Play gedrückt habe und die namen jeweils umgeschrieben habe (um zu sehen das auch die richtige Objecte in der Publicspalte sind) das es die vom ray anviesierten Objecte waren. Da scheine ich wohl irgend etwas in der Hierachy durcheinander gehauen zu haben.

Ich dachte der Unterschied von FindGameobjectwithtag zu Findwithtag wäre das es nur das eine anvisierte aussucht. 

EIne FRage habe ich noch. Macht es einen UNterschied ob man 

other = hit.collider.transform

oder

other =(hit.transform) schreibt?

Ich habe jetzt keinen feststellen können aber manchmal zeigt sich der Unterschied erst wenn man es unbedingt braucht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...