Raketen genau vor einem bild anzeigen, das ist schwer?!
Übersicht

Blitzkrieg BopBetreff: Raketen genau vor einem bild anzeigen, das ist schwer?! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Also, wie mache ich das, wenn ich eine Rake darstellen will, die immer genau vor der SPieler position sein soll, egal wie sich der spieler bewegt? (bewegung nur von links nach recht sund oben nach unten!) ich habe es wie folgt probiert, das geht aber nicht... Code: [AUSKLAPPEN] Function rakete_gegner() rg.rgegner = New rgegner rg\x = ImageWidth(rgegner)+205 rg\y = ImageHeight(rgegner)+200 End Function also, die rakete soll immer genau vor dme gegner starten, egal wie der sich bewegt! danke! |
||
~ Hey Ho Let's Go ~ |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
![]() |
||
~ Hey Ho Let's Go ~ |
Omenaton_2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nehmen wir mal an, die Welt wird von oben gezeigt, da du geschrieben hast, es gäbe links, rechts, oben, unten.
Du solltest die Ausrichtung der Figuren (Gegner und Held) in einer Variable speichern. Wenn die Figur nach oben ausgerichtet ist, (SELECT CASE) dann wird die Raketenposition auf Gegner_Y - 1 gesetzt, nach unten y+1, links x-1 und rechts x+1. (1 ist nicht unbedingt 1, es kann die Größe der Raketengrafik sein.) Was die Ausrichtung angeht. Du weißt wie am Anfang (beim ersten Zeichnen) die Ausrichtung ist, dann je nach dem in welche Richtung sich das Objekt bewegt, ändert sich die Ausrichtung. Ich rate dir lieber mehr mit Koordinaten als mit ImageWidth und sowas zu arbeiten. |
||
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hm, ich glaub du hast recht, doch dien beispiekl hab ich net gechekct! bitte code beispiel ?! ![]() ![]() |
||
~ Hey Ho Let's Go ~ |
girgl |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
servus bob
du speicherst einfach die aktuelle position deines spielers in ner variable und setzt die gleich der position der rakete.Je nachdem wie die spielrichtung is,addierst du nen wert der x-oder y-achse hinzu Beispiel: Code: [AUSKLAPPEN] ;Raumschiff bewegt sich von links nach rechts
SpielerX=50 ;X-Position SpielerY=300; RaketeX=SpielerX+20 RaketeY=SpielerY Drawimage Rakete,RaketeX,RaketeY Mit RaketeX=SpielerX+20 wird erreicht,dass die rakete immer 20 pixel vor dem raumschiff gezeichnet wird. Das alles musste natürlich in die hauptschleife packen,da sich ja die position des raumschiffs ständig ändern kann |
||
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
so könnte ich das auch! aber es geht darum, das ich das mit Types darstelle! | ||
~ Hey Ho Let's Go ~ |
![]() |
Flachzange |
![]() Antworten mit Zitat ![]() |
---|---|---|
gib mal den ganzen code...dann kann ich das da gleich reinschreiben!
sonst wird das hier wieder so ein Endlos-Thread! ![]() |
||
I'm no superman...! |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
dann mach doch noch ein typefield mit der richtung und beim umsetzen orientierst du die an diese Type\richtung
und verzweigst passend mit select je nach Richtung und setzt die werte neu |
||
[BB2D | BB3D | BB+]
|
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ralli, ich versteh kein wort, der code steht dea oben!!! | ||
~ Hey Ho Let's Go ~ |
![]() |
Flachzange |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn ich dich jetzt richtig verstanden habe, dann sollte es das hier sein:
![]() Code: [AUSKLAPPEN] Global PlayerDirection=1 Global PlayerX=0 Global PlayerY=0 Type rgegner Field x=0 Field y=0 Field dir=1 End Type while not keyhit(1) if keyhit(203) then PlayerDirection=1 PlayerX=PlayerX-1 endif if keyhit(205) then PlayerDirection=2 PlayerX=PlayerX+1 endif if keyhit(200) then PlayerDirection=3 PlayerY=PlayerY-1 endif if keyhit(208) then PlayerDirection=4 PlayerY=PlayerY+1 endif if keyhit(57) then rakete_gegner() handle_rockets() wend Function rakete_gegner() rg.rgegner = New rgegner Select PlayerDirection case 1 rg\x = PlayerX-205 rg\y = PlayerY rg\dir=1 case 2 rg\x = PlayerX+205 rg\y = PlayerY rg\dir=2 case 3 rg\x = PlayerX rg\y = PlayerY-200 rg\dir=3 case 4 rg\x = PlayerX rg\y = PlayerY+200 rg\dir=4 end select End Function Function handle_rockets() ; Raketen weiter steuern nach abschuss... end function |
||
I'm no superman...! |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hm , kannst du mir die variablen und den code nochmal erklären, ich steig net ganz durch! danke
übrigens: der rg\x wert, wird später per zufall bestimmt. würde dieser wert festliegen , könnte ich das prob glaube ich slesbt lösen, aber nun erklär mal den code bitte danke |
||
~ Hey Ho Let's Go ~ |
![]() |
Flachzange |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hä was soll denn das fürn Sinn machen wenn die Koordinaten der Rakete zufällig festgelegt werden? Ich denke die sollen vor dem Player erscheinen? Naja der Code erklärt sich doch wohl von selber oder?
Über die Variable PlayerDirection lasse ich feststellen in welche Richtung sich der Player bewegt (1: links, 2: rechts, 3: hoch, 4: runter) ich frage dann über keyhit() die gedrückte pfeiltaste ab und verschiebe den player je nach dem nach links, rechts, oben oder unten und lege die Bewegungsrichtung in PlayerDirection neu fest. In rakete_gegner() prüfe ich dann welche Bewegungsrichtung vorliegt und lasse die neu erstellte Rakete dementsprechend vor dem Player positionieren. Außerdem weise ich der Rakete eine eigene Bewegungsrichtung zu (rg\dir), die der Playerrichtung entspricht, um die Rakete in ihrer weiteren Flugbahn noch steuern zu können. Naja und dann in Handle_Rockets() werden dann die einzelnen Raketentypes der Reihe nach durchgegangen um sie weiter zu bewegen oder um auf Kollision zu prüfen oder was auch immer du damit dann vor hast! Alles Klaro? |
||
I'm no superman...! |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
genau so hattee ich das auch gedacht! | ||
[BB2D | BB3D | BB+]
|
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hmpf, also ich weiß nicht ob ich das so hinkriege! denn:
ich hab das ein bisschen falsch beshcrieben und mache es nun anschaulich: Die Raketen gehören zu Gegner Schiffen. Diese Gegner Schiffe stelle ich als Types dar und sie werden per Zufall (rand) poitioniert. Hier taucht das Problem auf, Denn hätte ich von anfang an eine feste variabel meintwegen: x = 50 und y = 50 für das Shciff, könnte ich das selber. Die Rakete soll nun, wenn das Gegnerschiff schiesst, genau vorne beim gegner herauskommen. Alles klar? DAnke für dne Code Zange, aber ich weiß nicht genau wie ich dne enutzen soll, wenn für das Gegner schiff keine feste , sondern eine zufalssvariabel benutzt wird ![]() |
||
~ Hey Ho Let's Go ~ |
Apocalyptic |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du hast doch die Position, nachdem du sie mit Rand() festgelegt hast, oder springen die Schiffe irgendwo auf dem Bildschirm rum? | ||
Suum cuique
[ www.ffs-net.de.vu ] [ Raycaster ] |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
und wie genau geht dsa nun, wenn da in ner function steht:
rg\x = rand(100,200) rg\y = rand(200,300) |
||
~ Hey Ho Let's Go ~ |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
also das prob ist eigentlich, wie kann ich machen, das das geht:
Code: [AUSKLAPPEN] Function gegner() g.gegner = New gegner g\x = Rand(50,600) g\y = Rand(100,500) End Function Function rakete_gegner() rg.rgegner = New rgegner rg\x = g\x ;<<< rg\y = g\y ;<<< End Function Also wie kann ich das Prob kösen, das ich 2 Types halt abfragen kann? |
||
~ Hey Ho Let's Go ~ |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Machs nicht in einer Function sondern lege den Schuss in der Schleife an in der die Gegner abgearbeitet werden. Ich denke da liegt der Hase im Pfeffer. | ||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
Blatolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Type gegner Field x,y End Type Type rakete Field x,y End Type gegner.gegner=New gegner gegner\x=Rand(50,600) gegner\y=Rand(100,500) schuss(gegner.gegner) For rakete.rakete=Each rakete rakete\y=rakete\y+1 Next Function schuss(gegner.gegner) rakete.rakete=New rakete rakete\x=gegner\x rakete\y=gegner\y End Function Sollte ungefähr das sein was du brauchst. Musst halt die vari Namen anpassen. Soll ja nur das Prinzip zeigen. EInfach ne function machen die den gegner von dem der Schuss ausgeht als Parameter übernimmt. |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Em, gib deinem Schiff doch mal nen Winkel damit es weiß wo es
hinschießen soll . Raketen Beispiel ist auch im CodeArchiv . Sonnst hätte ich noch ein Mini Netzwerkgame wo Schiffe als Linie rum fahren und Raketen abschießen können . |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group