NPC: Meteor per Function
Übersicht

DarthshootBetreff: NPC: Meteor per Function |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo!
Ich wollte im Mainprogramm einfach 2 externe Dateien laden. In der einen sind Daten vom Meteor drin: Code: [AUSKLAPPEN] ; Meteor
Global MeteorImage = LoadImage("Meteor.bmp") MaskImage MeteorImage, 255, 0, 255 Und in der anderen wird eine Art NPC erstellt: Code: [AUSKLAPPEN] ; Meteor
Function NPC_Meteor(XMeteor, YMeteor, Flugbahn1, Flugbahn2) ; Berechne Flugbahn If MeteorOn = 1 Then XMeteor = XMeteor - Flugbahn1 YMeteor = YMeteor + Flugbahn2 If XMeteor < -50 Then YMeteor = 700 MeteorOn = 0 Else ; Render Meteor... DrawImage MeteorImage, XMeteor, YMeteor EndIf EndIf End Function Jetzt soll man in der Bufferschleife nur noch die Function aufrufen und schon wird ein Meteor gespawnt. Und zwar so: Code: [AUSKLAPPEN] NPC_Meteor(500, 300, 3, 0)
Wobei die ersten beiden die Startpunkte sind und der dritte der Grad ist, in dem er sich bewegt und der vierte in welche richtung (nach unten oder oben) weil das ganze game von der Seite betrachtet ist... ehm aber irgendwie wird der Meteor garnicht angezeigt ![]() Danke im Voraus. MfG Darthshoot EDIT: HALT! Ich hatte vergessen MeteorOn eine eins zu geben.. jetzt wird er zwar sichtbar, aber bewegen tut er sich trotzdem nicht - warum? Code: [AUSKLAPPEN] ; Meteor
Function NPC_Meteor(XMeteor, YMeteor, Flugbahn1, Flugbahn2) MeteorOn = 1 ; Berechne Flugbahn If MeteorOn = 1 Then XMeteor = XMeteor - Flugbahn1 YMeteor = YMeteor + Flugbahn2 If XMeteor < -50 Then YMeteor = 700 MeteorOn = 0 Else ; Render Meteor... DrawImage MeteorImage, XMeteor, YMeteor EndIf EndIf End Function |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
weil du ihn 1x ansprichst und das war es. Du musst in der Mainloop auch eine aktualisierungsroutine haben die die Position auch effektiv aktualisiert. Von selbst wird das nicht geschehen, warum auch ... | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Darthshoot |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also ich habe jetzt nur noch ein Problem! Mit einem Komet klappts bestens. Aber das Problem ist, dass ich immer globale Variablen aktualisieren muss und ab 2 Kometen, kann ich in Meteor.bb nicht mehr diese globalen Variablen direkt ansprechen. Jetzt muss ich mir die irgendwie zusammen bauen. Geht das überhaupt? Also:
Code: [AUSKLAPPEN] ; Meteore initialisieren
Global Meteor1 = 1 Global M1P1 = 500 Global M1P2 = 300 Global Meteor2 = 1 Global M2P1 = 200 Global M2P2 = 400 Global Meteor3 = 1 Global M3P1 = 300 Global M3P2 = 500 .. NPC_Meteor(M1P1, M1P2, 3, 0, Meteor1, IDName1$ = "1") NPC_Meteor(M2P1, M2P2, 3, 0, Meteor2, IDName2$ = "2") NPC_Meteor(M3P1, M3P2, 3, 0, Meteor3, IDName3$ = "3") Meteor.bb: Code: [AUSKLAPPEN] ; Meteor
Function NPC_Meteor(XMeteor, YMeteor, Flugbahn1, Flugbahn2, ID, IDName$) ; Berechne Flugbahn If ID = 1 Then "M" + IDName$ + "P1" = XMeteor - Flugbahn1 "M" + IDName$ + "P2" = YMeteor + Flugbahn2 ; Render Meteor... DrawImage MeteorImage, XMeteor, YMeteor If XMeteor < -100 Then "Meteor" + IDName$ = 0 EndIf End Function Wenn ich mir also wie z.B. aus "Meteor" + IDName$ ein Meteor1 rauskommt oder eben die Nummer von der IDName, dann ist mein Problem gelößt, da er dann wieder die richtige globale Variable ansprechen würde.. aber irgendwie kommt bei meinem Script "expecting endif" und das liegt hundert Pro an diesen zusammengebatschten Variablen. |
||
snörkl |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
mach das am besten mit types oder das du einfach immer
global Komet=Kometenzähler kometenzähler=kometenzähler+1 dann später einfach bei index=kometenzähler oder so ähnlich |
||
Darthshoot |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Oman ich seh schon ich komm nicht um die Types herum... Also das Problem mit dem Zähler ist ja, dass er entweder 0 oder 1 ist und nicht 2 oder 3. Gibts denn garkeine Möglichkeit? | ||
Darthshoot |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe das Problem jetzt gelößt .. leider schlecht :/ aber gut.. aber trotzdem wird irgendwie nichts berechnet oder gerendert - woran liegts?
Hier ist einfach Meteor1 wenn 1 dann soll er gerendert werden und sowas.. Die P1, P2 sind X und Y Spawnpoints. ID wird für eine Case Anweisung benutzt. Code: [AUSKLAPPEN] ; Meteore initialisieren
Global Meteor1 = 1 Global M1P1 = 500 Global M1P2 = 300 Global Meteor2 = 1 Global M2P1 = 200 Global M2P2 = 400 Global Meteor3 = 1 Global M3P1 = 300 Global M3P2 = 500 .. ; Meteore werden gespawnt... P1: X, P2: Y, P3: Speed, P4: Flugwinkel, P5: ID vom Meteor... NPC_Meteor(M1P1, M1P2, 3, 0, ID = 1) NPC_Meteor(M2P1, M2P2, 3, 0, ID = 2) NPC_Meteor(M3P1, M3P2, 3, 0, ID = 3) Code: [AUSKLAPPEN] ; Meteor
Function NPC_Meteor(XMeteor, YMeteor, Flugbahn1, Flugbahn2, ID) ; Berechne Flugbahn Select ID Case 1 M1P1 = XMeteor - Flugbahn1 M1P2 = YMeteor + Flugbahn2 ; Render Meteor... DrawImage MeteorImage, XMeteor, YMeteor If XMeteor < -100 Then Meteor1 = 0 EndIf Case 2 If Meteor2 = 1 Then M2P1 = XMeteor - Flugbahn1 M2P2 = YMeteor + Flugbahn2 ; Render Meteor... DrawImage MeteorImage, XMeteor, YMeteor If XMeteor < -100 Then Meteor2 = 0 EndIf Case 3 If Meteor3 = 1 Then M3P1 = XMeteor - Flugbahn1 M3P2 = YMeteor + Flugbahn2 ; Render Meteor... DrawImage MeteorImage, XMeteor, YMeteor If XMeteor < -100 Then Meteor3 = 0 EndIf End Select End Function Was hab ich diesmal falsch gemacht? |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group