MuckGames Geschrieben 14. Februar 2017 Melden Share Geschrieben 14. Februar 2017 Hallo, ich habe ein Objekt mit einem Child-Objekt darunter. Diese Objekte sollen auf ein weiteres Objekt zeigen. Wobei sich das Parent-Objekt aber nur in der horizontalen und das Child-Objekt nur in der Vertikalen rotieren soll. Ich habe es bereits mit dem folgenden Code hinbekommen, dass sich das Parent-Objekt richtig rotiert: Vector3 horizontalDirection = tower.Target.transform.position - tower.horizontalRotatablePart.position; horizontalDirection.y = 0; Quaternion horizontalRotation = Quaternion.LookRotation(horizontalDirection); tower.horizontalRotatablePart.rotation = Quaternion.RotateTowards(tower.horizontalRotatablePart.rotation, horizontalRotation, tower.rotationSpeed * Time.deltaTime); Jedoch komm ich nun nicht weiter. Wenn ich den Code in abgeänderter Form auf das Child-Objekt anwende kommt da nur murgs bei raus. Das Objekt dreht sich dann ziemlich wirr. Ich vermute mal, dass es damit zusammen hängt, dass ich das Child-Objekt nur die localRotation ändern muss. Aber dies bekomme ich nicht hin. Kann mir dabei jemand weiterhelfen? Gruß, MuckGames Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 14. Februar 2017 Melden Share Geschrieben 14. Februar 2017 Kann gut sein, dass das eleganter geht, aber wie wäre es mit var direction = target - transform.position; var flatDirection = direction; flatDirection.y = 0; var targetDirection = new Vector3(0, flatDirection.magnitude, direction.y); var targetRotation = Quaternion.LookRotation(targetDirection); transform.localRotation = Quaternion.RotateTowards(transform.localRotation, targetRotation, speed * Time.deltaTime); Klappt natürlich nur, wenn der Parent ausschließlich auf der Y-Achse gedreht ist. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 14. Februar 2017 Melden Share Geschrieben 14. Februar 2017 Na jedenfalls zuerst das Parentobjekt drehen und dann das Childobjekt, ansonsten kommt murks raus. Ansonsten fürs Child dann halt: Vector3 verticalDirection = tower.Target.transform.position - tower.verticalRotatablePart.position; verticalDirection.x = 0; Quaternion verticalRotation = Quaternion.LookRotation(verticalDirection); tower.verticalRotatablePart.rotation = Quaternion.RotateTowards(tower.verticalRotatablePart.rotation, verticalRotation, tower.rotationSpeed * Time.deltaTime); 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.