Jump to content
Unity Insider Forum

Trigger aktiviert sich obwohl kein Kontakt zur anderen CollisionBox besteht


eddysoulo

Recommended Posts

Hallo liebe Community ich dachte mir ich stell mich auch gleich mal vor wenn ich schonmal was poste :)... mein Name ist Eddy bin 25 Jahre alt und versuche mit nun seit paar Tagen in Unity3D ein Projekt auf die Beine zu stellen. Davor habe ich viel mit dem GameMaker: Studio gemacht bin auch noch ein aktives Mitglied in so einem Forum jedoch wollte ich mal langsam zum "Standard" der Indie-Entwicklung umsteigen. Da meiner Meinung nach C# viel einfacher als C++ ist war für mich gleich klar das ich mit Unity3D statt Unreal oder der CryEngine mein neues Projekt starte. Bis jetzt lief auch alles ganz und konnte viele Probleme durch kleinere Recherchen durch die Docs bewerkstelligen. Aber jetzt hab ich was, da weiß ich leider nicht weiter und hoffe ihr könnt mir da Helfen :)... ich habe auf der linken Seite einen Player der eine normale CollisionBox2D besitzt und rechts habe ich einen Gegner der eine CollisionBox2D besitzt und ein Child welches eine Triggered CollisionBox2D besitzt. Diese Box will ich später durch Code an der Breite ändern sodass wenn der Spieler auf die Triggered Box kommt eine Aktion stattfindet. Das ist an sich auch kein Problem und die Aktion funktioniert. Aus Testzwecken lasse ich den Player und den Gegner mit Hilfe von Physik gegeneinander stoßen. So jetzt das Problem beim ersten mal Boxen passiert nichts so wie es sein soll jedoch beim 2ten Boxen wird die Aktion der getriggerten CollisionBox aktiviert obwohl ich die so klein gemacht habe, dass der Player und die CollisionBox sich gar nicht berühren oder zumindenst sollten, dass würde nämlich heißen mein Player würde fast bist zur hälfte des sprite width gelangen. Hoffe ich konnte mich verständlich äußern und hoffe noch mehr das ihr mir helfen könnt :)...

 

Gruß Eddy

Link zu diesem Kommentar
Auf anderen Seiten teilen

Schau dir mal die Collidermatrix an, vielleicht löst sich dann schon dein Problem, nicht jeder Collider funktioniert in jeder Konfiguration, je nachdem ob der Collider:

  • keinen Rigidbody besitzt (Static Collider) oder
  • der Rigidbody auf "Kinematic" (Kinematic Collider) gesetzt wurde oder
  • ist "Trigger" aktiviert wurde (Trigger Collider)

https://docs.unity3d...rsOverview.html

Link zu diesem Kommentar
Auf anderen Seiten teilen

Willkommen im Forum.

 

Ein Bild sagt mehr als...

 

Du bekommst sicher mehr und bessere Antworten, wenn du die Wall-of-Text da oben etwas mehr strukturierst und evtl. ein oder zwei Screenshots oder den relevanten Script-Code mit einfügst, wo eigentlich das Problem liegt. Aus der Fehlerbeschreibung

So jetzt das Problem beim ersten mal Boxen passiert nichts so wie es sein soll

kann man viel rausinterpretieren, aber ob das dann den Fehler trifft? Wie soll es denn sein? Was passiert denn genau?

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 1 month later...

Also erstmals vielen lieben Dank an alle... auch wenns bisschen spät kommt :)... ich weiß zwar nicht den Grund des Fehlers aber ich habe es beheben könne. Ich habe jetzt einfach den einen BoxCollider der getriggert werden soll Public gemacht und ihn über die IDE hinzugefügt habe. Jetzt habe ich aber ein anderes Problem was ich nicht so ganz verstehe.

 

Und zwar funktioniert mein Coroutine nicht so wie ich es möchte, wobei besser gesagt eig. funktioniert es schon nur schaltet es mein state nicht immer nicht immer mein Code sieht wie folgt aus

public class GameController : MonoBehaviour {
public enum Status {start, attacke, action, wait, value, playerWin, enemyWin};
public Status state = Status.start;

Text text = "";

void Start(){
   StartCoroutine(GameStart());
}

void Update(){
	 switch(state){
	 case Status.start://Start
	   break;
    case Status.attacke: text.text = "Springe";
									 state  =Status.action;
	 break;
	  case Status.action text.text = "action";
	 break;
}
IEnumerator GameStart()
   {
    text.text = "3";
    yield return new WaitForSeconds(1);
    text.text = "2";
    yield return new WaitForSeconds(1);
    text.text = "1";
    yield return new WaitForSeconds(1);
    state = Status.attacke;
    }
}

 

Also nochmal die Problemstellung, an sich funktioniert der Code aber nicht immer, mal macht er was er machen soll und mal bleibts einfach bei der 1 und ändert mein State nicht... hättet ihr da möglicherweiße eine Lösung bzw. eine Idee an was das liegen kann ? Kann es vll. dran liegen das ich mein enum Status und state auf public habe ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...