Schuss-Platzierung im Raum
Übersicht

Dogg0Betreff: Schuss-Platzierung im Raum |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ich habe es geschafft mit Hilfe ein paar Tutorials einen kleinen 2D Spaceshooter zu coden, bis jetzt habe ich aber nur Einzelschuss drin. Jeder Schuss startet immer von der Mitte eines Raumschiffs. Die Richtung eines Schusses wird so berechnet, was ich aus einem Tut habe: x# = x# - Cos(mwinkel#) * speed# y# = y# - Sin(mwinkel#) * speed# Jetzt wollte ich einen neuen Schuss einführen: 2 Kugeln Die sollen aber nicht übereinander in der Mitte starten sonden getrennt, jeweils links und rechts von einem Raumschiff. Da ich Mathe-Noob bin habe ich wild drauflosprobiert mit cos, sin und tan, aber ich kriegs nicht hin. Hat jemand einen Plan wie das gehen könnte? |
||
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
Wenn es Dir nur darum geht, an welcher Position Deine Schüsse starten, dann hat das ja nicht direkt etwas mit ihrer Flugbahn bzw. deren Berechnung zu tun, sondern lediglich mit deren erster Positionierung. Demnach ist es eigentlich super simple, denn Du brauch nur den x und y Wert verschieben.
Bei einem horizontalen Spaceshooter wäre die Verschiebung für zwei nebeneinander fliegende Geschosse zb.: y - 16 für Schuss 1, y + 16 für Schuss 2. Bei einem vertikalen Spaceshooter wäre die Verschiebung zb.: x - 16 für Schuss 1 und x + 16 für Schuss 2. +-16 sind willkürlich gewählt, es ist die Weite des Abstands. Wenn ich Dein Problem falsch verstanden habe und du möchtest, dass die zwei Schüsse in gegensätzliche Richtungen fliegen, dann musst Du den Schusswinkel des zweiten Geschosses um 180° erhöhen. |
||
Dogg0 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
danke für die antwort aber so einfach ist es leider nicht
habe vergessen zu erwähnen dass man das Raumschiff in 360 Richtungen - je nach Winkel steuern kann. Bei Richtungsänderung addiere oder subtrahiere ich zum Richtungswinkel dazu Wenn ich jetzt einfach was zur x oder y position addiere oder subtrahiere steht der schuss bei einem anderen winkel wieder an einer anderen position wenn ich den schuss in der Bewegungsrichtung verschieben will geht das so x# = x# - Cos(mwinkel#) * speed# y# = y# - Sin(mwinkel#) * speed# speed ist die geschwindigkeit des schusses mwinkel ist der richtungswinkel jetzt will ich den schuss aber nicht in der Bewegungsrichtung ändern sondern in der anderen konnte ihn schon anders positionieren nur ändert sich die position bei jeder winkeländerung wieder |
||
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
Achso, ja dann müsste das in etwa so klappen:
x = x + cos(winkel) * x_verschiebung + sin(winkel) * y_verschiebung y = y + cos(winkel) * y_verschiebung + sin(winkel) * x_verschiebung Also das ist die Formel für die Startplatzierung. *hoffentlich kein Denkfehler drin* 8) |
||
Dogg0 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
danke für die hilfe aber es klappt immer noch nicht so ganz ![]() x = x + cos(winkel) * x_verschiebung + sin(winkel) * y_verschiebung y = y + cos(winkel) * y_verschiebung + sin(winkel) * x_verschiebung wenn ich für die x_verschiebung einen wert eingebe und für y_verschiebung 0 dann wird der schuss in bewegungsrichtung verschoben wenn ich für y_richtung einen wert angebe und für x_richtung 0 dann wird zwar richtig verschoben aber wenn ich eine kurve fliege und sich der winkel ändert dann ändert sich auch die startposition des schusses ![]() |
||
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
Die Possitionsverschiebung darfst Du natürlich nur für die Initialisierung des Geschosses ausrechnen. D.h. wenn Du ein neues Geschoss erstellst, rechnest Du so die Position aus:
x_geschoss = x_raumschiff + cos(winkel_raumschiff) * x_verschiebung + sin(winkel_raumschiff) * y_verschiebung Dann speicherst Du zudem in einer Variable: winkel_geschoss = winkel_raumschiff In jedem Update des Geschosses rechnest Du von da an: x_geschoss = x_geschoss + cos(winkel_geschoss) * x_geschoss_geschwindigkeit + sin(winkel_geschoss) * y_geschoss_geschwindigkeit Die "Speed" Variable, die Du bisher verwendest hast, würde der x_geschoss_geschwindigkeit entsprechend. Hoffe, dass klappt nun endlich ? ![]() [/edit] Määääh, Du hast recht, irgendetwas klappt da noch nicht richtig. Verdammt! ![]() |
||
Dogg0 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
so mach ich das auch aber es funzt nicht
das problem ist glaub woanders initialisierung der startposition ax,ay = raumschiffposition x1 = ax + cos(awinkel) * 30 + sin(awinkel) * 0 y1 = ay + cos(awinkel) * 0 + sin(awinkel) * 30 wenn ich das so mach verschiebt sich die startposition nur in der richtung in der der schuss auch fliegt wenn ich das so mache: x1 = ax + cos(awinkel) * 0 + sin(awinkel) * 30 y1 = ay + cos(awinkel) * 30 + sin(awinkel) * 0 passt sich die startposition des schusses an den winkel an das heisst wenn sich der richtungswinkel ändert startet der schuss an einer anderen position, aber immerhin auf der richtigen achse das problem ist also die startposition konstant zu halten auch wenn sich der richtungswinkel ändert ![]() ![]() |
||
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
BlitzBasic: [AUSKLAPPEN]
Kopier Dir das mal in Dein BlitzMax rein und schau es Dir an! ![]() |
||
Dogg0 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
vielen, vielen, vielen Dank !
ich werde dir ewig dankbar sein ![]() ![]() ![]() ![]() ![]() ![]() |
||
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
Freut mich, dass ich Dir helfen konnte! ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group