DerStefan Geschrieben 15. September 2020 Melden Share Geschrieben 15. September 2020 Hallo Freunde :) In meinem Beispiel möchte ich gern, dass Objekt 2 zerstört wird, sobald es von Objekt 1 berührt wird. Objekt 2 hat eine feste Position, während die Position von Objekt 1 gleichzeitig mit der Kamera modifiziert wird. (Um eine Art Aufzug-Simulation zu erzeugen.) Beide Objekte haben Collider und die Skripte sind: using UnityEngine; public class KameraBewegung : MonoBehaviour { public Transform player; public Vector3 offset; void Update() // Update is called once per frame { transform.position = new Vector3(transform.position.x, transform.position.y + 0.1f, transform.position.z); } } (Dieses Skript hängt sowohl an MainCamera als auch an Objekt 1) Hier noch das zweite Skript, welches ebenfalls an Objekt 1 (Aufzug) hängt: using UnityEngine; public class Zerstoerung : MonoBehaviour { private void OnCollisionEnter(Collision collision) // Sobald dieses GameObject mit einem anderen kollidiert { Destroy(collision.collider.gameObject); // Das andere GameObject zerstören } } Beide Objekte (A und B) befinden sich auf der gleichen Z-Achse, aber bei der Berührung passiert nichts. Warum? Danke für jede Hilfe und beste Grüße Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 16. September 2020 Melden Share Geschrieben 16. September 2020 Das sich bewegende Objekt (Objekt 1) muss einen Rigidbody(2D) besitzen. Unity erkennt nur Kollisionen zwischen 2 Objekten mit Collidern wenn mindestens 1 Objekt davon einen RB besitzt. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
DerStefan Geschrieben 16. September 2020 Autor Melden Share Geschrieben 16. September 2020 Danke für deine Hilfe. Ich habe es versucht, aber es hat nichts geändert. (Egal ob BoxCollider2D, RigidBody2D oder 3D) Die Objekte treffen aufeinander, aber es findet keine "Zerstörung" statt. Hier mal zwei Screenshots: Viele Grüße Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 17. September 2020 Melden Share Geschrieben 17. September 2020 Du solltest für ein 2D-Spiel dringend 2D-Physik-Komponenten benutzen, das wird dir eine Menge Kopfschmerzen ersparen. Aber zum Problem... dein Kollisions-Code sieht gut aus. Die Komponenten können noch falsch eingestellt sein (der "eine Rigidbody" muss iirc non-kinematisch sein, siehe hier), aber wenn's das nicht ist, ist hier ein nervigeres Problem vorhanden. Aber erstmal gefragt: Der Cube fällt runter und bleibt auf der Plattform liegen? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
DerStefan Geschrieben 17. September 2020 Autor Melden Share Geschrieben 17. September 2020 Ich bedanke mich für eure Hilfe! Nach einigen Versuchen habe ich ein neues Projekt (3D) erstellt und beide Objekte mit RigidBodies und BoxCollidern ausgestattet. Das Objekt, das zerstört werden soll, hat keine Gravity und eine Masse von 1. Die Plattform (die nach oben bewegt wird) hat ebenfalls keine Gravity aber eine Masse von 1000000, damit diese bei der Kollision sich nicht bewegt (ansonsten ändert sich ihre Rotation). Das obere Objekt wird zerstört! Das Problem bei dem 2D-Beispiel war, dass ich dort keine Cubes hatte und diese als 3D-Objekte einfügen musste. Und mit einem BoxCollider2D und RigidBody2D hat es nicht geklappt. Anscheinend hätte ich 2D -> TileMap verwenden müssen. Viele Grüße Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 18. September 2020 Melden Share Geschrieben 18. September 2020 vor 10 Stunden schrieb DerStefan: Die Plattform (die nach oben bewegt wird) hat ebenfalls keine Gravity aber eine Masse von 1000000, damit diese bei der Kollision sich nicht bewegt (ansonsten ändert sich ihre Rotation). Das ist ein finsterer Hack. Schau dir beim Rigidbody lieber "Constraints" und den Modus an. Anstatt so etwas durch extreme Zahlen, die in der Regel doofe Nebeneffekte haben, zu machen, stelle das Ding lieber direkt auf "kann sich nicht drehen". vor 10 Stunden schrieb DerStefan: Das Problem bei dem 2D-Beispiel war, dass ich dort keine Cubes hatte und diese als 3D-Objekte einfügen musste. Und mit einem BoxCollider2D und RigidBody2D hat es nicht geklappt. Die 2D-Komponenten können alles, was die 3D-Komponenten können. Naja, außer 3D sein. Du musst nur beachten, dass du dann anstatt OnCollisionEnter auch OnCollisionEnter2D benutzt. vor 10 Stunden schrieb DerStefan: Anscheinend hätte ich 2D -> TileMap verwenden müssen. Nö. Tilemaps sind in keiner Weise erforderlich, um ein Spiel zu machen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
DerStefan Geschrieben 18. September 2020 Autor Melden Share Geschrieben 18. September 2020 Vielen Dank für die beiden Tipps! Habe es jetzt so umgesetzt und mit 2D funktioniert es ebenfalls perfekt! Ja, ich dachte mir schon, dass das mit der extrem hohen Masse keine saubere Lösung ist... Beste Grüße! 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.