Problem mit einem Hittest

Mediax

Grünschnabel
Hi,
ich bin momentan dabei ein Flashprojekt im Rahmen meiner Ausbildung zu absolvieren. Es geht dabei um ein kleines Jump & Run. Nun habe ich das Problem , dass ein Hittest sehr ungenau funktioniert.
Es geht dabei um folgendes:
Die Spielfigur (_root.char) soll auf bestimmte Gegenstände draufspringen können und dann dort sitzen bleiben. auf gemalte gegenstände habe ich also recht dicke Balken gemalt(6 px) und Alpha null gesetzt, wo ich möchte, dass sich die Spielfigur "hinsetzt". Leider passiert es nur relativ selten, dass die Spielfigur auch wirklich auf diesen Balken sitzen bleibt.
Ich habe schon gelesen, dass es eine Problematik zu ungenauen Hittestabfragen gibt. Allerdings bin ich bissher nicht zu einer Lösung meines Problems gekommen.
Die Hittestbalken befinden sich im Movieclip mit den Instanznamen _root.hintergrund_mc.wald_vorne.hittest_mc .

Hier der relevante AS-Code:
Code:
//Wenn Variable Jumping true ist     
if (jumping)
{
	//Springe in den Frame mit der Springenanimation
	this.gotoAndStop ("springen");
	this._y -= jump;
	jump -= .5;
	if (jump < 0)
	{
		falling = true;
	}
	// wenn Jump kleiner ist als -15       
	if (jump < -15)
	{
		jump = -15;
	}
}

//Abfrage, ob der Hittest_mc getroffen wird
else if (_root.hintergrund_mc.wald_vorne.hittest_mc.hitTest(this) && falling)
{
	jump = 9;
	jumping = false;
	falling = false;
}

Hat jemand eine Idee, wie ich mein Problem mit dem Hittest in den Griff bekomme? Bin für jede Hilfe dankbar.
 
Hi,

bei einfacher Verwendung von hitTest ist die Chance recht groß, dass Du (zumal bei höheren Geschwindigkeiten) Dein Ziel verpasst. Zudem kannst Du nicht ohne weiteres herausfinden, ob in welcher Richtung (bzw. an welcher Seite) Du mit einem Hindernis kollidierst.

Zum einen würde ich bei einem Spiel daher nicht unbedingt auf hitTest zurückgreifen, sondern etwas eigenes implementieren: Beim Springen (bzw. Fallen nach unten) beispielsweise testen, ob sich die "Füße" Deiner Figur innerhalb oder schon etwas unterhalb des jeweiligen "Bodens" befinden (noch besser: würde Dich die nächte Positionsänderung in bzw. unter das Hinderniss führen?).

Für "Richtungsfragen": Man kann an markanten Stellen des Sprite sog. "Cuepoints" definieren, für die Du per hitTest mit Shapeflag nacheinander die Kollisionen überprüfst. In diesem Thread findest Du ein kleines Beispiel von mir dafür. ;)

Gruß
.
 
Zurück