Jump to content
Unity Insider Forum

[2D] Objekt bei Berührung zerstören


DerStefan

Recommended Posts

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

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

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

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

Archiviert

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

×
×
  • Neu erstellen...