Garzec Geschrieben 12. April 2018 Melden Share Geschrieben 12. April 2018 Hallo, beim Abfeuern eines Projektiles verwende ich erstmal folgenden Code private Rigidbody rigid; private Vector3 currentMovementDirection; private void FixedUpdate() { rigid.velocity = currentMovementDirection; } public void InitProjectile(Vector3 startPosition, Quaternion startRotation) { transform.position = startPosition; transform.rotation = startRotation; currentMovementDirection = transform.forward; } Dabei verwende ich InitProjectile als Startmethode, weil ich die Projektile nicht zerstöre sondern recycle (Renderer disablen). Sobald das Projektil auf ein Objekt trifft, das dieses Projektil reflektieren kann, soll das Projektil reflektiert werden. Unity scheint dafür bereits etwas zu haben, https://docs.unity3d.com/ScriptReference/Vector3.Reflect.html Wenn die Collision also getriggert wird private void OnTriggerEnter(Collider other) { if (other.gameObject == projectile) { projectileComponent.ReflectProjectile(); } } Soll das Projektil seine Richtung und Rotation ändern. public void ReflectProjectile() { // Vector3.Reflect(... , ...); } Leider verstehe ich nicht so recht, welche Parameter dort übergeben werden müssen. Ich habe es auch mal auf anderem Wege probiert, indem ich die Velocity mit -1 multipliziere, logischerweise wird dann aber einfach die Bewegungsrichtung umgekehrt. Wäre super, wenn mir jemand mit der Reflektion helfen könnte Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Garzec Geschrieben 12. April 2018 Autor Melden Share Geschrieben 12. April 2018 Ich habe es erstmal hinbekommen mit public void ReflectProjectile() { RaycastHit hit; Ray ray = new Ray(transform.position, currentMovementDirection); if (Physics.Raycast(ray, out hit)) { currentMovementDirection = Vector3.Reflect(currentMovementDirection, hit.normal); } } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.