Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

1

19.02.2012, 16:05

Unity 3d Aktion bei Collision mit Objekt auslösen

Hallo Community,
schon wieder habe ich eine Frage zu Unity3d / C#:
Ich will bei der Collision des Objekts "Spieler" mit dem Objekt "Haus" eine Aktion ausführen lassen. Um festzustellen, wann der "Spieler" mit dem Haus colliediert, habe ich folgenden Code verwendet (welcher aber nicht funktioniert):

C#-Quelltext

1
Debug.Log("Collided with " + collision.gameObject.name);


Hat jemand eine Idee woran es liegen könnte?

Harry222

Alter Hase

Beiträge: 864

Beruf: Student

  • Private Nachricht senden

2

19.02.2012, 16:14

Wird dein Debug.Log denn in OnCollisionEnter aufgerufen?
Wenn nicht guck mal hier!

Mfg Harry222

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

3

19.02.2012, 16:22

Mein Code sieht nun so aus:

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
using UnityEngine;


using System.Collections;

public class AktionenSpieler : MonoBehaviour {


    // Use this for initialization
    void Start () {
    
    }
    
    // Update is called once per frame
 void Update()
 {
 }
 
}

public class example : MonoBehaviour
{
 public Transform explosionPrefab;
 void OnCollisionEnter(Collision collision)
 {
 Debug.Log("Collided with " + collision.gameObject.name);
 }}


Aber leider passiert noch rein garnichts...

Harry222

Alter Hase

Beiträge: 864

Beruf: Student

  • Private Nachricht senden

4

19.02.2012, 16:29

Ist der Code in einer Datei? :huh:

Mfg Harry222

DerMark

Treue Seele

Beiträge: 324

Wohnort: Emsdetten

Beruf: Softwareentwickler

  • Private Nachricht senden

5

20.02.2012, 08:59

Wenn nicht einmal die Logausgabe funktioniert scheint mir das ein Hinweis darauf zu sein dass einer oder beide deiner GameObjekte falsch konfiguriert ist, kannst du uns mal die beiden Einstellungen der Collider und Rigidbody Komponenten zukommen lassen? Auch wäre es gut zu wissen welchen Collidertyp du denn jeweils benutzt, da es auch hier bereits Möglichkeiten gibt die Kollisionen untereinander rein mit dem typ zu verhindern.

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

6

20.02.2012, 10:03

Ist der Code in einer Datei?
Ja, die C#-Codedatei ist dem Objekt "Spieler" zugewiesen worden, dem allerdings schon mehrere Codedateien zur Steuerung zugewiesen wurden.

Wenn nicht einmal die Logausgabe funktioniert scheint mir das ein Hinweis darauf zu sein dass einer oder beide deiner GameObjekte falsch konfiguriert ist, kannst du uns mal die beiden Einstellungen der Collider und Rigidbody Komponenten zukommen lassen? Auch wäre es gut zu wissen welchen Collidertyp du denn jeweils benutzt, da es auch hier bereits Möglichkeiten gibt die Kollisionen untereinander rein mit dem typ zu verhindern.
Mh, wo sehe ich den das? Der "Spieler" enthält übrigens noch folgende Skripte: Third Person Controller, Third Person Camera, Third Person Controler.
Die Objekte auf meiner Karte: Das Haus(bestehend aus mehreren Objekten, importiert in Unity3d als .fbx-Datei) hat einen Hacken bei "Mesh Collider". Das funktioniert auch gut, da ich nicht durchs Haus rennen kann. Nur es wird eben kein Log Eintrag durch mein Skript erstellt.

DerMark

Treue Seele

Beiträge: 324

Wohnort: Emsdetten

Beruf: Softwareentwickler

  • Private Nachricht senden

7

20.02.2012, 10:11

Ich bin mir da grade nicht so sicher, aber braucht man nicht einen Collider und eine Rigidbody Komponente zur gleichen zeit am gleichen objekt damit andere Komponenten an diesem Objekt die ganzen OnCollisioneXYZ Events bekommen? Dein Spieler scheint das nicht zu haben. Du kannst ja auch mal das hier versuchen:

http://unity3d.com/support/documentation…olliderHit.html

Kann mich da aber auch irren was die Collider/Rigidbody Sache angeht.

Du siehst die Einstellungen übrigens ganz normal im Inspektor, da wo du auch die Komponenten sehen kannst die deinem GameObject zugewiesen wurden.

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

8

20.02.2012, 10:30

So, das "Haus" und der "Spieler" haben nun beide ein Collider und eine Rigidbody Komponenten, aber es passiert trotzdem noch nichts...

DerMark

Treue Seele

Beiträge: 324

Wohnort: Emsdetten

Beruf: Softwareentwickler

  • Private Nachricht senden

9

20.02.2012, 10:31

Was hast du denn nun alles eingestellt? Mach doch einfach mal eine Reihe von Bildern von deinem Inspektor wenn du den Spieler und wenn du dein Haus ausgewählt hast.

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

10

20.02.2012, 12:05

Ok, hier wären mal ein paar Screenshots:
»MitgliedXYZ« hat folgendes Bild angehängt:
  • screenshot.gif

Werbeanzeige