Gubbl Geschrieben 4. März 2013 Melden Share Geschrieben 4. März 2013 Hey Leute, ich habe ein kleines skript geschrieben, in dem ich ein objekt an den Mauszeiger hänge. Mein Problem ist jetzt, das wenn ich jetzt in die Szene klicke natürlich das Objekt im weg ist. Jetzt bräuchte ich eine möglichkeit, das objekt ein bisschen versetzt an die maus zu hängen. Ich denke mal, es gibt dafür ne einfach lösung, aber ich komme da einfach nicht drauf. var pointobj:Transform; var hit:RaycastHit; function Update () { if(pointobj!=null){ cursorRay = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(cursorRay,hit)){ if(pointobj!=null){ if(hit.collider.gameObject.tag == "ground"){ pointobj.transform.position = hit.point; } } } } } vielen dank gruß Gubbl Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Schlumpf Geschrieben 4. März 2013 Melden Share Geschrieben 4. März 2013 hit.point.x=hit.point.x+20; pointobj.transform.position = hit.point; Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Gubbl Geschrieben 4. März 2013 Autor Melden Share Geschrieben 4. März 2013 Perfekt. Funktioniert super. Kann ja alles so einfach sein. vielen Dank gruß Gubbl Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Schlumpf Geschrieben 4. März 2013 Melden Share Geschrieben 4. März 2013 könntest das noch um z.b. die alt taste erweitern das wenn du alt drückst das object "verschoben" angetackert ist Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Floater Geschrieben 4. März 2013 Melden Share Geschrieben 4. März 2013 Kannst du das Obj. Beim Aufnehmen nicht auf einen anderen Layer legen der von den Rays ignoriert werden? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Usche Geschrieben 4. März 2013 Melden Share Geschrieben 4. März 2013 Ich finde die Lösung mit der Verschiebung etwas unelegant, vorallem wenn du Objekte unterschiedlicher Größe instanzieren möchtest. Falls du nur einen "Ground" hast, könntest du von diesem aus einen collider.Raycast ausführen, da dieser alle anderen Collider ignoriert. private GameObject ground; ground = GameObject.Find("Ground"); void Update() { RaycastHit myhit = new RaycastHit(); Ray myray = new Ray(); myray = Camera.main.ScreenPointToRay(Input.mousePosition); if (ground.collider.Raycast(myray,out myhit, 1000.0f)) { this.transform.position = (myhit.point); } } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Mauri Geschrieben 4. März 2013 Melden Share Geschrieben 4. März 2013 (off-topic incoming) ground = GameObject.Find("Ground"); Autsch.. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Gubbl Geschrieben 5. März 2013 Autor Melden Share Geschrieben 5. März 2013 So, mit den Layern funktioniert das jetzt wunderbar. Ist viel sinnvoller und eleganter als meine idee. Vielen dank an alle für die Hilfe Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.