Und nochmal Billard

malibubu

Mitglied
Hallo Zusammen,

ich bin dabei, ein Billiard-Spiel zu Flashen :)

Mit Hilfe der com.bit101.BilliardBall-Klasse von bit101.com habe ich die Kugelkollisionen gehandelt. Jedoch komme ich im Moment nicht weiter, da ich nicht weiß, wie ich die weiße Kugel mit Hilfe des Qeues anstoßen soll...

Zuerst wählt man mit der linken Maustaste das Ziel/die Richtung. Anschließend wird so lange "Space" gedrückt gehalten, bis die "Wunschgeschwindigkeit" erreicht wird. (ActionScript befindet sich in dem leeren MC oben links (1x mit 1xklick, 1x mit doppelklick).

Anbei die FLA (und die eingebundene Klasse, achtung: Auf Verzeichnisstrucktur achten).

Vielleicht kann mir ja jemand nen Tipp geben. Danke im Voraus!

Datei gibt's hier, da ich sie hier nicht hochladen konnte, da sie zu große ist:
http://www.go2one.de/billiard.rar
 
Hi,

die BilliardBall-Klasse stellt u.A. Getter und Setter für den Geschwindigkeitsvektor (vx und vy) zur Verfügung.

Im Prinzip musst Du dem Ball beim Loslassen der Leertaste nur entsprechende Werte übergeben:
PHP:
_root.k0.vx = delta_x;
_root.k0.vy = delta_y;
... und das Ding rollt los. ;)

Die Werte für delta_x und delta_y bekommst Du aus der _rotation-Eigenschaft des Queues (durch PI * 180 teilen) und der Höhe des Balkens für die Energie.

Beispiel zum Umwandeln von Winkel und Geschwindigkeit in kartesische Delta-Werte:
PHP:
delta_x = Math.cos(winkel) * energie;
delta_y = Math.sin(winkel) * energie;
(wobei "winkel" der Winkel im Bogenmaß ist)

Gruß
.
 
Also:

So macht er nur quatsch: Die Richtung ist falsch:

var winkel = _root.CElement._rotation;
delta_x = Math.cos(winkel) * _root.geschwindigkeit;
delta_y = Math.sin(winkel) * _root.geschwindigkeit;
_root.k0.vx = delta_x;
_root.k0.vy = delta_y;

Wobei _root.geschwindigkeit z.B. 10 ist.
 
Zurück