flashdevelop collision

Status
Niet open voor verdere reacties.

Example5

Terugkerende gebruiker
Lid geworden
9 mrt 2008
Berichten
2.172
beste,

ik ben op dit moment bezig om in flashdevelop (het programma) in actionscript 3 een soort 'game' te maken. het doel is om een soort breakout te maken, ik weet alleen niet hoe ik de bal kan laten terugkaatsen op het peddle (dat schuivertje onder in beeld, ik heb hem de bar genoemd).

heeft iemand een idee hoe ik dit kan doen? ik heb namelijk al een beetje rondgekeken, maar ik kom niet verder dat hittestbox ofzo, en daar lukt het me ook niet mee...

let op dat mijn code in flashdevelop is, aangezien dit nog al eens verschilt van de 'gewone flash' mijn code:

Code:
package 
{
	import flash.display.SpreadMethod;
	import flash.display.Sprite;
	import flash.events.KeyboardEvent;
	import flash.ui.Keyboard;
	import flash.events.Event;
	
	/**
	 * ...
	 * @author **************
	 */
	
	public class Main extends Sprite {
		private var bar:Sprite;
		private var ball:Sprite;
		private var vx2:Number = 0;
		private var ax2:Number = 0;
		private var vx:Number = 4;
		private var ax:Number = 0;
		private var vy:Number = 4;
		private var ay:Number = 0;
		private var radius:Number = 40;
		
		public function Main() {
			init();
		}
		
		private function init():void {
			bar = new Sprite();
			addChild(bar);
			bar.graphics.beginFill(0x0000ff);
			bar.graphics.drawRect(0,270,100,20);
			bar.x = stage.stageHeight / 2;
			bar.y = stage.stageHeight / 2;
			bar.addEventListener(Event.ENTER_FRAME, onEnterFrame); 
			stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
			stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp)
			
			ball = new Sprite();
			addChild(ball);
			ball.graphics.beginFill(0x3B0B39);
			ball.graphics.drawCircle(0, 0, radius);
			ball.x = 50;
			ball.y = 80;	
			ball.addEventListener(Event.ENTER_FRAME, onEnterFrame);
		}
		
		private function onKeyDown(event:KeyboardEvent):void {
			if(event.keyCode == Keyboard.LEFT)
			{
				ax2 = -0.2;
				trace("Bar naar links"); 
			}
			else if(event.keyCode == Keyboard.RIGHT)
			{
				ax2 = 0.2;
				trace("Bar naar rechts"); 
			}
		}
		
		private function onKeyUp(event:KeyboardEvent):void {
			ax2 = 0;
		}
		
		private function onEnterFrame(event:Event):void {
			vx2 = vx2 + ax2;
			bar.x += vx2;
		
			if (bar.x + 100> stage.stageWidth) {
				vx2 = vx2 * -1;
			}
			if (bar.x < 0) {
				vx2 = vx2 * -1;
			}
			
			ball.x += vx;
			ball.y += vy;
		
			if (ball.x + radius > stage.stageWidth) {
				vx = vx * -1.01;
			}
			if (ball.x - radius < 0) {
				vx = vx * -1.01;
			}
			if (ball.y + radius > stage.stageHeight) {
				vy = 0;
				vx = 0;
				ax = 0;
				ay = 0;
				trace("Mis"); 
			}
			if (ball.y - radius < 0) {
				vy = vy * -1.01;
			}
		}
	}
}
 
Beste 3747

Als je de volgende code onder aan de functie onEnterFrame toevoegt werkt het:

if (ball.hitTestObject(bar)) {
trace("Raak");
vy = -vy;
}

Het beste kun je voor het testen de waarden van vx en vy verlagen zodat de bal niet zo snel is.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan