Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 09-02-2012, 08:40   #1 (permalink)
Neuer User
 
Registriert seit: Sep 2004
Beiträge: 3
enemys und mauern

Hi Leute,
ich arbeite gerade an einem Spielchen und habe gerade ein Problem mit der Kollision der Gegner. Die Kollision des Spielers funktioniert wunderbar.

Die Objekte werden in ein Array geladen und dann mit zB für den seitlichen Hittest abgefragt:


Code:
	for (i=0; i<Level.length; i++) {
		if (player.getRect(this).intersects(Level[i])) {
			if (speedX > 0) { // moving right
				player.x = Level[i].left - player.width/2;
			}
			if (speedX < 0) { // moving left
				player.x = Level[i].right + player.width/2;
			}
		}
	}
Wie gesagt, das geht sehr gut. Nun wollte ich ein paar Gegner erstellen und diese haben eine Klasse. Innerhalb der Klasse möchte ich dasselbe abfragen, aber leider funktioniert das nicht so wirklich und weiss grad nicht mehr weiter.

mfg
FAGabriel ist offline   Mit Zitat antworten
Alt 09-02-2012, 09:48   #2 (permalink)
Neuer User
 
Registriert seit: Sep 2004
Beiträge: 3
Hier nochmal die Klasse. Es soll die Kollision von 2 Rechtecken im Endeffekt erfolgen.

Code:
package  {
	
	import flash.display.Sprite;
	import flash.display.MovieClip;
	import flash.display.DisplayObject;
	import flash.events.*;
	
	public class enemy extends MovieClip {
		
		var speedX = 0;
		private var ROOT:Object;
		
		
		public function enemy() {
			
			ROOT = MovieClip(root);
			addEventListener(Event.ENTER_FRAME, loop);
		}
		
		public function loop(e:Event) {
		
			speedX = -10;
			
			this.x += speedX;
			
			for (var i=0; i<ROOT.Level.length; i++) {
				if (this.getRect(this).intersects(ROOT.Level[i])) {
					trace("Hit");
					if (speedX > 0) { // moving right
						this.x = ROOT.Level[i].left - this.width/2;
					}
					if (speedX < 0) { // moving left
						this.x = ROOT.Level[i].right + this.width/2;
					}
				}
			}
			
		}
	}// end class
	
}// end package
FAGabriel ist offline   Mit Zitat antworten
Alt 09-02-2012, 14:39   #3 (permalink)
Neuer User
 
Registriert seit: Nov 2005
Beiträge: 548
- Du schreibst nicht, was genau nicht geht. Also wunder dich nicht über fehlende Antworten.
- ROOT sieht nach Müll aus.
- Warum über root gehen wollen - übergib doch direkt das Array als Referenz.
- Aber eigentlich macht man das so auch nicht, mach lieber eine Klasse "Level", die alle Mauern und aktuellen enemys etc. enthält. Diese Klasse prüft dann.
joeydee ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Flash CS3] "Undurchdringliche Mauern" für MCs Ray_86 Flash Einsteiger 2 27-11-2008 12:12
welches Werkzeug für die Mauern im Labyrinth willibald Flash 4 und Flash 5 4 20-07-2004 19:09
Mauern KingJamez Flash 4 und Flash 5 5 14-01-2004 14:00


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:55 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele