Kein Schuss zu sehen ...

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Garfield360

Betreff: Kein Schuss zu sehen ...

BeitragSa, Apr 24, 2004 11:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

Ich habe (versucht) einen Code zu erstellen, der ein Schuss direkt nach vorne hin abfeuert.
Doch ich sehe kein Bild geschweigedenn ein Schuss !
Ich habe ein "Print "Feuer"" mit eingebaut, so sehe ich bdas die Funktion aufgerufen wird, was sie auch wird, es gibt keine Fehlermeldung... .

Hier mein Code

Code: [AUSKLAPPEN]
Function DrawSchuss()
 Projectil=LoadImage("C:\schuss.jpg")
 Print "feuer"
 y = MouseYSpeed()
 x = MouseXSpeed()
 z = 0
For z = 1 To 10000
 DrawImage(Projectil,x,y)
Next
End Function


danke für die Hilfe


Garfield360
 

INpac

BeitragSa, Apr 24, 2004 13:23
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm, warum soll das mal 3D werden?

dann kannste mit types einen schuss erstellen.
du erstellst dann zB eine sphere an der cam, drehst sie auf deren winkel und bewegst sie dann immer nach vorne...

BladeRunner

Moderator

BeitragSa, Apr 24, 2004 15:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Function DrawSchuss()
 Projectil=LoadImage("C:\schuss.jpg")
 Print "feuer"
 y = MouseYSpeed()
 x = MouseXSpeed()
 z = 0
For z = 1 To 10000
 DrawImage(Projectil,x,y)
Next
End Function

Oweh- das ist ja übelster Code !
1. Lade deine Bilder schon vorher- jedesmal wenn Du die Function aufrufst, lädst du auch das Bild neu. Das hält der Beste SPeicher nur begrenzt lange aus.
2. Was soll der Sinn deiner Z-Schleife sein? Du zeichnest dein Bild 10000mal an exakt derselben Stelle und bremst damit dein Programm aus.
Wenn Du vorhaben solltest ein 3D-Programm zu schreiben, muß ich dich bitter enttäuschen -so wird das nichts. Du verschiebst bei einem 3D-Prg keine Blidchen, sondern Objekte. Geh mal auf die www.blitzbase.de und schau Dir die 3D-Befehle an; vielleicht wird dann einiges etwas klarer.
3. Wenn es bei einem 2D-Proggy bleiben soll: Was soll die Zuweisung von MouseXspeed und MouseYspeed ? Die Befehle geben die relative (!) Positionsänderung seit dem letzten Aufruf wieder; d.h. keine absoluten Koordinaten. Hier wär Mousex() und MouseY() der richtige Befehl.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Jolinah

BeitragSa, Apr 24, 2004 19:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Er meint vermutlich sowas:

Code: [AUSKLAPPEN]

;Bild nur 1 mal ganz am Anfang laden
Global Projectil=LoadImage("C:\schuss.jpg")

;Bild an der Position der Maus malen.
;Dazu bräuchte man zwar nicht unbedingt ne eigene Funktion ;)
Function DrawSchuss()
  DrawImage(Projectil, MouseX(), MouseY() )
End Function


Aber da das ganze ja wohl 3d werden soll kann ich dir auch nur Empfehlen die 3d Befehle anzuschauen.

Markus2

BeitragMo, Apr 26, 2004 19:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Flip vergessen ?
Ansonnsten 2D Grafik nach Renderworld malen .
 

Garfield360

BeitragDi, Apr 27, 2004 15:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

Ich hab das problem jetzt selbst hinbekommen, doch wie bekomme ich das hin das ich sehe , wie sich die kugel bewegt?

BladeRunner

Moderator

BeitragDi, Apr 27, 2004 15:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Dein Code ?
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Garfield360

BeitragDi, Apr 27, 2004 15:54
Antworten mit Zitat
Benutzer-Profile anzeigen
sry habe ich vergessen ...:

If KeyHit(29) Then

x = EntityX (cam)
y = EntityY (cam)
z = EntityZ (cam)


Sph = CreateSphere(22)

For z=1 to 100
z=z+1
next

PositionEntity sph ,x,y,z

End If

BladeRunner

Moderator

BeitragDi, Apr 27, 2004 16:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
If KeyHit(29) Then

x = EntityX (cam)
y = EntityY (cam)
z = EntityZ (cam)


Sph = CreateSphere(22)

For z=1 to 100
z=z+1
next

PositionEntity sph ,x,y,z

End If

Hmmm
immer Noch übelst, wenn auch schon 3d....
Also:
Wenn du eine For-next schleife machst, brauchst du die ZählerVariable nicht manuell zu erhöhen. (z=z+1 ist unnötig).
Das erledigt die Schleife ganz allein.
Dann ist deine Schleife unnötig, da du den View nicht aktualisierst, somit also keine bewegung erkennbar wäre.
Code: [AUSKLAPPEN]
Sph = CreateSphere(22)
while not keyhit(1)
If KeyHit(29) Then
  fired_bullet=1
  x = EntityX (cam)
  y = EntityY (cam)
  zend = EntityZ (cam) +100
end if
if fired_bullet=1 then
  if z <=zend then
    PositionEntity sph ,x,y,z
    z=z+1
  else
    fired_bullet=0
  end if
End If
updateworld()
renderworld()
wend

Was ich da geschrieben hab, ist noch äusserst unsauber, und auch ungetestet.
es geht hier aber mehr um das Prinzp:
Wenn die Feuertaste gedrückt wird, merkst du dir (Fired_bullet) dass eine Kugel unterwegs ist und veränderst dann bei jedem Durchlauf deiner Hauptschleife die Position ein Wenig, bis die Kugel ihre Reichweite überschritten hat.
In diesem (unschönen) Beispiel wird deine Kugel auch unabhängig von der Blickrichtung abgefeuert.
aber als Grundprinzip sollte es (hoffe ich) etwas helfen.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group