Kleines Spiel Problem

DooMoOo

Mitglied
Hi @ all ,
Hab nen kleines Spiel gemacht wo wenn man mit der Mausspitze die Strecke berührt man halt Verloren hat und wenn man durch die Strecke durch is und das Ziel erreicht man halt Gewonnen hat ... so ich krieg das aber nur mit der Maus spitze hin würde das aber gerne auch mit MC's machen :) Nur da hab ich das Problem mit der Boundin Box ....

Hat jemand nen Tipp wie ich das umgehe
Danke im Vorraus :)
Gez.
DooMoOo
 

Anhänge

Zuletzt bearbeitet:
Hi,

Du musst in diesem Fall alle herausragenden Ecken (und/oder Kanten) des MCs auf Kollision mit der Begrenzung (oder zumindest jeweils nur die, die bei der augenblicklichen Bewegung "vorne" liegen) testen.

Gruß
.
 
Huhu ... sorry ich weiss jetz grad nicht was du meinst .. könntest du das anders Fomulieren oder in der Fla mal anwenden und Anhängen :)
 
Hi,

hmm, gaanz einfach ist das nicht: Bei komplexen (oder größeren) Formen brauchst Du quasi eine ganze Menge Punkte, die Du auf Kollision überprüfst - oder Du prüfst die Bewegungsrichtung des Sprites relativ zur Begrenzung, was an dieser Stelle aber wohl zu weit führen würde.

Im Anhang mal ein kleines Beispiel mit "cuepoints": Das sind Punktförmige MovieClips, Die Du rund um Dein Objekt an markanten Punkten anordnest und alle auf Kollision mit der Begrenzung überprüfst. Daran kannst Du ersehen, an welcher Stelle das Objekt die Begrenzung berührt (im Beispiel habe ich die Dinger mal sichtbar gemacht, um das zu verdeutlichen).

Gruß
.
 

Anhänge

Huiuiui, ich wein gleich, heißt ich verstehs nicht. Kann mir mal wer für doofe erklären, was checkCollision(bnd) genau macht? So wie ichs verstehe, zählt es die einzelnen Movieclips in Cuepoints durch.
Wofür stehen allerdings
this._x;
cuepoints._x;
obj._x;
?
So, ich geh mal übern Weihnachtsmarkt, vielleicht versteh ichs ja mit Glühweinunterstützung ;)

Tobi
 
Hi,

also der Reihe nach:
Code:
function checkCollision(bnd) {
Die Funktion bekommt eine Referenz auf den Clip mit der Begrenzung übergeben
Code:
for (var i in cuepoints) {
Hier gehe ich (wie Du schon erkannt hast) alle Clips in "cuepoints" durch - das sind die Instanzen von "cue".
Code:
if (typeof(cuepoints[i]) == "movieclip") {
Ok, hier schau ich bloß, ob ich auch wirklich nen MovieClip am Haken habe - for..in zählt mir nämlich alles auch, auch Variablen, Listener, Funktionen usw falls vorhanden. ;)
Code:
var obj = cuepoints[i];
Ich speichere den aktuellen Clip in einer Variable (nur aus Schreibfaulheit: "obj" tippt sich fixer als "cuepoints[i]")
Code:
var px = this._x + cuepoints._x + obj._x;
var py = this._y + cuepoints._y + obj._y;
In px und py stehen nun die Koordinaten (Mittelpunkte) des aktuellen "cue"-MCs relativ zum Begrenzungsclip (daher muss die Position des Autos und die Position des cuepoints-Containers hinzugerählt werden).
Code:
if (bnd.hitTest(px, py, true)) {
Wenn nun also dieser cuepoint mit der Begrenzung kollidiert ...
Code:
obj.hit();
... sag ich ihm, er soll kurz aufblinken. An dieser Stelle kannst Du auf die Kollision reagieren. Wenn es sich um einen cuepoint auf der linken Seite handelt, kannst Du das Auto z.B. nach rechts abprallen lassen. Um das herauszufinden kannst Du z.B. noch den Abstand dieses MCs relativ zum Mittelpunkt des Autos berechnen - oder Du gibst jedem Cuepoint zusätzliche Variablen, die Aufschluss über die Position geben.

Gruß
.
 
Zurück