[AS3] Jemand eine Idee die Geschosse zu animieren?

Pestilence

Mitglied
Hallo mal wieder :),
ich stehe momentan mit meinem momentanen Projekt (zum AS3 lernen) etwas aufm Schlauch.
Ich habe soweit schon einen Panzer zum fahren gebraucht (Pfeiltasten), der Turm richtet sich auch richtig nach der Maus aus und alles so weit super.

Nur leider habe ich momentan keinen Ansatz wie ich die Geschosse auf den Weg bekomme. Ich hatte die Idee einen bewegungspfad zu erzeugen und das Geschoss dem Pfad folgen zu lassen. Weiss jemand wie man das dynamisch in AS3 erstellt?

Hier die swf:
http://www.nintz.de/flash/zombie.html

Und hier die Klasse für die Geschosse:
PHP:
package zombie
{
	import flash.display.MovieClip;
	import flash.events.KeyboardEvent;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.ui.Keyboard;
	
	public class mainGunc extends MovieClip
	{
		public var pspeed:MovieClip;
		public var pcount:Number = 0;
		
		public function mainGunc(px:Number, py:Number, rot:Number, MPX:Number , MPY:Number)
		{
			var line_mc:MovieClip = new MovieClip();
			
			line_mc.graphics.lineStyle(1,0x000000,100);
			line_mc.graphics.moveTo(px, py);
			line_mc.graphics.lineTo(MPX, MPY);
			line_mc.trackAsMenu
			
			addChild(line_mc);
			
			var mainGun:sabot = new sabot();
			mainGun.x = px;
			mainGun.y = py;
			mainGun.rotation = rot;
			
			addEventListener(Event.ENTER_FRAME, releaseShot);
			addChild(mainGun);
			trace("feuer! "+rot);
		}
		
		public function releaseShot(e:Event) : void
		{
			//this.getChildAt(0).moveTo(
			//this.getChildAt(0).x += 0+pcount;
			//this.getChildAt(0).y -= 0+pcount;
			
			pcount += 0.5;
		}
	}
	
}

Ich hoffe jemand kann mit helfen würde gern weiterkommen, und Suchen haben mich leider nicht weitergebracht.

Gruß,
Pestilence
 
Hi,

ich habe dir auf die schnelle ein kleines Beispiel programmiert wie du die Kugeln in die entsprechende Richtung bewegen lassen kannst. Wichig ist hierbei das du den Winkel von Grad in Radian umwandeln mußt für sin/cos.

Code:
stop();

//Geschwindigkeit der Kugel
var speed = 10;
var degree;
panzer.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);


//Panzer drehen
function enterFrameHandler(e:Event) {
	degree = e.target.rotation = Math.atan2(mouseY - e.target.y, mouseX  - e.target.x) * 180/Math.PI;
}

//Abfeuern der Kugel
function mouseDownHandler(e:MouseEvent) {
	var kugel = new Kugel();
	stage.addChild(kugel);
	kugel.x = panzer.x;
	kugel.y = panzer.y;
	kugel.degree = degree;
	kugel.addEventListener(Event.ENTER_FRAME, shotHandler);
}

//Bewegen der Kugel
function shotHandler(e:Event) {
	var mc = e.target as MovieClip;
	//Winkel in Radian umrechenen
	var radians:Number = mc.degree * Math.PI / 180;
	mc.vx= Math.cos(radians) * speed;
	mc.vy = Math.sin(radians) * speed;
	mc.x += mc.vx;
	mc.y += mc.vy;
	//Kugeln löschen von der Displaylist wenn außerhalb der Stage
	if (mc.x < 0 || mc.x > stage.stageWidth) {
		destroyKugel(mc);
	}
	if (mc.y < 0 || mc.y > stage.stageHeight) {
		destroyKugel(mc);
	}
}

function destroyKugel(clip) {
	trace("DELETE:" +clip.name);
	clip.removeEventListener(Event.ENTER_FRAME, shotHandler);
	stage.removeChild(clip);
	clip = null;
}

Hier die Files.

Gruß
 

Neue Beiträge

Zurück