HitTest Problem

  • Themenstarter Themenstarter ByeBye 148134
  • Beginndatum Beginndatum
B

ByeBye 148134

Hallo miteinander! Ich habe ein kleines Problem mit meiner Test - Animation.
Ich möchte ein kleines Spiel à la Zelda programmieren.
Nun habe ich folgendes Problem.
Man sehe sich folgende Testanimation an:

Testanimation

Das sieht schonmal nich schlecht aus. Der Kasten mit dem Pfeil geht nich durch den schwarzen Balken. Lässt man aber nun die Taste dann los, wenn sich beide Kanten berühren und drückt dann die Taste nach unten, dann marschiert der Pfeilkasten durch den Balken und die Bewegungen links und Rechts sind vertauscht (ist ja auch klar, da HitTest = true ist).
Meine Frage: Wie lässt sich das verhindern? Hier der Script, welcher auf dem Pfeilbalken liegt:

HTML:
onClipEvent (enterFrame) {
	moveX=5;  //Geschwindigkeit horizontal
	moveY=5;  //Geschwindigkeit vertikal
	if (Key.isDown(Key.UP)&& this.hitTest(_root.Mauer)==false){
		this._y = this._y-moveY;
		gotoAndStop(1);
	} else if (Key.isDown(Key.UP) && this.hitTest(_root.Mauer)==true){
		this._y = this._y+moveY;}
		
	else if (Key.isDown(Key.DOWN) && this.hitTest(_root.Mauer)==false) {
		this._y = this._y+moveY;
		gotoAndStop(5);
	} else if (Key.isDown(Key.DOWN) && this.hitTest(_root.Mauer)==true){
		this._y = this._y-moveY;}
		
	else if (Key.isDown(Key.LEFT) && this.hitTest(_root.Mauer)==false) {
		this._x = this._x-moveX;
		gotoAndStop(10);
	} else if (Key.isDown(Key.LEFT) && this.hitTest(_root.Mauer)==true){
		this._x = this._x+moveX;}
		
	else if (Key.isDown(Key.RIGHT) && this.hitTest(_root.Mauer)==false) {
		this._x = this._x+moveX;
		gotoAndStop(15);
	} else if (Key.isDown(Key.RIGHT) && this.hitTest(_root.Mauer)==true){
		this._x = this._x-moveX;}
}

Ich benutze Macromedia Flash MX.
Kann mir da jemand, so schnell wie möglich, helfen? Vielen Dank im Voraus
 
Zuletzt bearbeitet von einem Moderator:
Ein prinzipieller Tipp - gilt für viele Lebenslagen: ;)
Erst schauen, dann laufen.

In dem Fall:
Erst die neue potentielle Position ausrechnen, prüfen ob sie "zulässig" ist
und nur wenn dem so ist, dann das Objekt dort hinsetzen.

Gruß
Rena
 
Ich habs geschafft!
Hab mir das, was du geschrieben hast, nochmal gründlich durch den Kopf gehen lassen!
Hier die verbesserte Version: http://www.wir-machen-durch.de/Onlinebilder/Test.swf

Hier der Code (für alle, die ähnliche Probleme haben):

HTML:
onClipEvent (enterFrame) {
	moveX = 5;
	moveY = 5;
	if (Key.isDown(Key.UP)) {
		this._y = this._y-moveY;
		gotoAndStop(1);
		if (_root.Mann.hittest(_root.mauer)) {
			this._y = this._y+moveY;
		}
	} else if (Key.isDown(Key.DOWN)) {
		this._y = this._y+moveY;
		gotoAndStop(5);
		if (_root.Mann.hittest(_root.mauer)) {
			this._y = this._y-moveY;
		}
	} else if (Key.isDown(Key.LEFT)) {
		this._x = this._x-moveX;
		gotoAndStop(10);
		if (_root.Mann.hittest(_root.mauer)) {
			this._x = this._x+moveX;
		}
	} else if (Key.isDown(Key.RIGHT)) {
		this._x = this._x+moveX;
		gotoAndStop(15);
		if (_root.Mann.hittest(_root.mauer)) {
			this._x = this._x-moveX;
		}
	}
}

Danke für deine Hilfe! Könnt dich drücken!!

gruß, Dominik
 
Zuletzt bearbeitet von einem Moderator:
Einen kleinen theoretischer Tipp für den konkreten Fall
umgesetzt/abgewandelt ... und gleich auch an später
Suchende/Mitlesende gedacht. Prima, so soll es sein. :)

Nichts zu danken, im Gegenteil :)
Liebe Grüße
Rena
 
Zuletzt bearbeitet:
Zurück