Terrain mit Hindernissen

Liamderprogger

Erfahrenes Mitglied
Hi,

Ich habe ein Fahrzeug und lasse es auf einem Gelände fahren, nun möchte ich dieses Terrain mit Felsen abgrenzen und auch einzelne Hindernisse aufstellen.

Ich habe versucht dies mit HitTest zu lösen, mir fällt höchstens ein, das Fahrzeug wieder die Pixelanzahl der Geschwindigkeit zurückzusetzen, das ist aber nicht besonders schön.

Kann mir jemand eine Funktion oder eine andere Möglichkeit nennen?
 
Hi,

bei unregelmäßig geformten Hindernissen, hilft dieser Ansanz vielleicht weiter.

Aus dem Winkel "getroffener Cuepoint" <=> "Mittelpunkt des Sprites" kannst Du dann grob den Aufprallwinkel berechnen und das Ding in die richtige Richtung abprallen lassen.

Gruß
.
 
Also erstmal danke, Dein Vorschlag scheint gut zu sein.

Ich habe aber das Problem, dass wenn ich das Fahrzeug drehe, die falschen Punkte leuchten, sprich die gegenüberliegenden, die bei normaler Startposition an das Hindernis kommen würden aufleuchten.

Wegen dem eigentlichen Sinn: Ich möchte das Fahrzeug nicht abprallen lassen, denn es wird zu langsam dafür sein. Ich will einfach nur, dass das Gefährt nicht über den Berg etc. fahren kann also darum herum muss. Du sagtest mit Winkel berechnung, und dann sicher um die Geschwindigkeit zurück. Das hört sich vll. einfach an aber für mich ist es das nicht. Könntest Du mir dabei noch einmal helfen?

MfG Liam
 
Hi,

wenn Du das Fahrzeug drehst, indem Du es spiegelst, kannst Du dieses Problem durch Abfrage einer negativen _xscale-Eigenschaft abfangen. ... oder habe ich Dich falsch verstanden?

Den Winkel bekommst Du so:
Code:
Math.atan(dy / dx);
, wobei dy der vertikale Abstand und dx der horizontale ist.

Gruß
.
 
Also mein Code um das Fahrzeug zu bewegen

Code:
onClipEvent (load) {
    var speed_tank = 15;
    var rot_speed_tank = 10;
}
onClipEvent (enterFrame) {
    if (Key.isDown(Key.LEFT)) {
        this._rotation -= rot_speed_tank;
    } else if (Key.isDown(Key.RIGHT)) {
        this._rotation += rot_speed_tank;
    }
    if (Key.isDown(Key.UP)) {
        var sobj = getSpeed(this._rotation);
        this._x += sobj.spdx;
        this._y += sobj.spdy;
    } else if (Key.isDown(Key.DOWN)) {
        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_tank;
        var sy = -Math.cos(ang)*speed_tank;
        return {spdx:sx, spdy:sy};
    }
}

Da ist irgendwo das Problem, dass die Cuepoints nicht in wahrheit mitdrehen, man sieht es zwar aber nach Drehund leuchten die falschen Punkte.

Ich gehe davon aus, dass hier etwas geändet werden müsste

Code:
    var px = this._x + cuepoints._x + obj._x;
    var py = this._y + cuepoints._y + obj._y;

Nur ich steige da nicht ernsthaft durch auch nach Deiner Erklärung im andern Thread.

Als Hilfe für die Vorstellungskraft: Es soll Warsheep/Kriegsschafe (von ICQ) ähneln
 
Zuletzt bearbeitet:
Zurück