Jump to content
Unity Insider Forum

Mehrere (2d) Trigger - Reihenfolge Problem


MaZy

Recommended Posts

Hallo,

 

ich habe ein Spiel wo man über Felder läuft. War eigentlich ein Challenge von mir innerhalb 2 Stunden fertig zu werden. Naja wegen dem Problem hänge ich nun bissel.

 

Es geht darum, dass ich ein Spieler hab und eine bewegende Plattform, aber unter den Plattform gibt es auch noch etwas, wo man aber da dann stirbt. Die nennen wir mal Deadzone.

 

So manchmal ist das doof, da die Reihenfolge mal sich ändert bei TriggerEnter usw. Mal wird es durch den Plattform zu erst getriggert, mal der Deadzone.

Jetzt war meine Idee noch einen seperaten Check mit Physics2D zu machen, aber mir viel auf, dass man ja nach Z Richtung gar nicht machen kann.

 

Habt ihr eine Idee? Kann man da noch was machen?

 

Edit: Mir fällt auf ich kann ja Physics2D Raycast einfach auf die selbe Stelle feuern.. gar nicht daran gedacht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn die Plattform rechteckig ist und du die Größe der Plattform kennst, kannst du einfach auch die Fläche, die die Plattform gerade einnimmt, als Sicher betrachten. Also wenn dein X größer Plattform_minimalX und dein X kleiner Plattform_maximalX dann sicher.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja, danke, aber habe jetzt doch mit Physics2D gemacht. Ich raycaste einfach auf die selbe Stelle mit 0,0 Richtung. Da überprüfe ich, welche ich nun da alles treffe.

 

Das doofe war nur, dass die Plattformen gesagt haben, ob ich sterbe. Jetzt hab ich es doch auf den Player übertragen. Da ging das leichter.

 

So sieht es bei mir derzeit aus und es funktioniert auch.

bool IsOnDeadzone()
{
bool onDeadZone = false;
bool onTransport = false;

RaycastHit2D [] hits = Physics2D.RaycastAll(transform.position, Vector2.zero);
if (hits.Length > 0)
{
	for(int i = 0; i < hits.Length; i++)
	{
		var entity = hits[i].transform.GetComponent<Entity>();
		if(entity)
		{
			if(entity.type == Entity.CollisionType.TransportsPlayer)
				onTransport = true;
			else if(entity.type == Entity.CollisionType.DeadZone)
				onDeadZone = true;
		}
	}
}

return !onTransport && onDeadZone; // nur true, wenn man auf keine Transportplattform ist, aber in einer deadzone
}

 

Komisch, dass mir manchmal Lösungen einfällt, wenn ich erst etwas gepostet habe.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...