Auto drehen, wie fährt es dann richtig?

WiZZaRd91

Grünschnabel
Hallo Leute, bin ganz neu hier und noch nich wirklich geübt in Flash 8... hab zwar schon 1 Spiel programmiert, aber das is nix besondres ^^..
Also: Ich will ein Spiel programmieren mit nem Auto (geht aus der Überschrift hervor ^^), mit den Pfeiltasten das auto rotieren lassen und so is auch wunderbar, das auto fährt nach oben und nach unten... aber wenn ich es gedreht hab, fährt es halt immer noch gerade die y-achse nach obn....
stop();
speed_car = 15;
var spd = 10;

mcauto.onEnterFrame = function() {
if (Key.isDown(Key.LEFT)) {
this._rotation -= spd ;
}
else if (Key.isDown(Key.RIGHT)) {
this._rotation += spd ;
}
else if (Key.isDown(Key.UP) && this._y > 10) {
this._y -= speed_car;
}
else if (Key.isDown(Key.DOWN) && this._y <= 460) {
this._y += speed_car;
}
}

So... ich denke mal das das Problem am "this._y > 10)" liegt... aber ich hab leider keine Ahnung wie ich mit Variablen umgehen oder sie einbauen muss.... also was müsste ich machen, damits klappt?
THX WiZZaRd91
P.S: wenns das schon gibt, sry, aber bitte trotzdem antworten und danach verschieben :-)
 
Hi und willkommen im Forum,

wenn Du rotierte Sprites in die "richtige" Richtung bewegen willst, musst Du aus der _rotation-Eigenschaft den Winkel im Bogenmaß berechnen und daraus und aus der Geschwindigkeitskonstante kartesische Vektoren erstellen. Beispiel:
Code:
var speed_car = 15;
var spd = 10;

mcauto.onEnterFrame = function() {
	if (Key.isDown(Key.LEFT)) {
		this._rotation -= spd ;
	} else if (Key.isDown(Key.RIGHT)) {
		this._rotation += spd ;
	}
	if (Key.isDown(Key.UP) && this._y > 10) {
		var sobj = getSpeed(this._rotation);
		this._x += sobj.spdx;
		this._y += sobj.spdy;
	} else if (Key.isDown(Key.DOWN) && this._y <= 460) {
		var sobj = getSpeed(this._rotation);
		this._x -= sobj.spdx;
		this._y -= sobj.spdy;
	}
}

function getSpeed(ang) {
	ang = ang * Math.PI / 180;
	var sx = Math.sin(ang) * speed_car;
	var sy = -Math.cos(ang) * speed_car;
	return {spdx:sx, spdy:sy};
}

Gruß
.
 
Zurück