Probleme mit dem bewegen von Schüssen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

sven123

Betreff: Probleme mit dem bewegen von Schüssen

BeitragMi, Nov 24, 2004 23:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier habe ich einen Code wie ich eigentlich schüsse erstellen und bewegen lassen will,der Code ist vom Sytaxmäsigem her richtig nur sehe ich meine erstelten schüsse nicht.An was liegt das?
Code: [AUSKLAPPEN]

bulletsprite = LoadSprite("f:\bullet.jpg")
HideEntity bulletsprite
Type bullet
Field obj
Field lifetime
End Type
while not keyhit(1)
If MouseHit(1) Then
bullet.bullet = New bullet
bullet\obj = CopyEntity(bulletsprite,cam)
ShowEntity bullet\obj 
PositionEntity bullet\obj,EntityX#(cam),EntityY#(cam),EntityZ#(cam)
EndIf
For bullet.bullet=Each bullet
MoveEntity  bullet\obj,0,0,-1.0
Next
wend
Amd Athlon 2200+,Saphire Atlantis Radeon9800pro,1024 MB DDR RAm,40 Gb Festblatte.
'in shâ'a llâh=so Gott will
Fertiges Projekt:Invasion der Heuschrecken
 

getlose

BeitragMi, Nov 24, 2004 23:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

;zersetzen wir mal deinen code


;ein sprite laden
bulletsprite = LoadSprite("f:\bullet.jpg")

;sprite ausblenden
HideEntity bulletsprite

;erstelle type für bullets
Type bullet
   Field obj
   Field lifetime
End Type

;anfang der hauptschleife
While Not KeyHit(1)

   ;drückt man die maustaste(1) dann kopiere sprite
   If MouseHit(1) Then
      bullet.bullet = New bullet
      bullet\obj = CopyEntity(bulletsprite,cam) ;hier hängst du das sprite komischerweise an die cam ran
      ShowEntity bullet\obj 
      PositionEntity bullet\obj,EntityX#(cam),EntityY#(cam),EntityZ#(cam)
   EndIf
   For bullet.bullet=Each bullet
      MoveEntity  bullet\obj,0,0,-1.0 ;hier verschiebst du jedes sprite nach HINTEN
   Next
Wend


ergebnis=du siehst nix Smile
 

sven123

BeitragDo, Nov 25, 2004 19:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Also muss ich 1 bei moventity angeben das ich sie an die Cam Kopiere ist logisch den das spiele ist ein art Egoschooter und die Schüsse gehen von der Cam aus.
Amd Athlon 2200+,Saphire Atlantis Radeon9800pro,1024 MB DDR RAm,40 Gb Festblatte.
'in shâ'a llâh=so Gott will
Fertiges Projekt:Invasion der Heuschrecken
 

sven123

BeitragDo, Nov 25, 2004 21:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Falls es dir weiter Hilft hier kannst du dir alle daten des Programms runterladen vielicht findest du dann den Fehler den ich gemacht habe.
http://home.arcor.de/the_fuzzy/Test3d.zip
Und hier ist noch der Komplette Code.
Code: [AUSKLAPPEN]

Graphics3D 800,600,0,1
AppTitle "Rammjäger"
HidePointer
SetBuffer BackBuffer()
Global pivot
;Laden der Texturen und Meshs
terrain=LoadTerrain("f:\Grassclip.bmp")
text1=LoadTexture("f:\Gras.jpg")
metallpyramide=LoadMesh("f:\pyramide.x")
Gebaude=LoadMesh("f:\house.x")
Burg=LoadMesh("f:\Burg.x")
himmel=LoadTexture("f:\himmel2.jpg")
Baumstumpf=LoadMesh("f:\Baumstumpf.x")
Baumstumpf1=LoadMesh("f:\Baumstumpf.x")
Baumstumpf2=LoadMesh("f:\Baumstumpf.x")
Baumstumpf3=LoadMesh("f:\Baumstumpf.x")
cockpit=LoadImage("f:\rearcockpit1.bmp")
Fadenkreutz=LoadImage("f:\Fadenkreutz.bmp")
bulletsprite = LoadSprite("f:\bullet.jpg")
HideEntity bulletsprite
Type bullet
Field obj
Field lifetime
End Type   
;Objekt richtig drehen 
;Erstellen eines Pivot für die Kollision
sky=CreateSphere(32)
FlipMesh sky
ScaleEntity  sky,7000,9000,7000
PositionEntity sky,6500,1000,6800
;Metallpyramide
PositionEntity metallpyramide,5000,20,7800
PositionEntity Baumstumpf,Rand(-2000,6000),20,Rand(-1000,9000)
PositionEntity Baumstumpf1,Rand(-2000,6000),20,Rand(-1000,9000)
PositionEntity Baumstumpf2,Rand(-2000,6000),20,Rand(-1000,9000)
PositionEntity Baumstumpf3,4200,20,9000
;
PositionEntity Burg,5000,-5,8000
;Das Terrain erstellen und Texturieren
pivot=CreatePivot()
EntityRadius pivot,0.2 
EntityTexture terrain,text1,0,0
ScaleEntity terrain,50,60,50
ScaleTexture text1,20,20
;Spielfigur posizionieren
TerrainDetail terrain,8000,True
;Position der Hand 
;Position des Hauses
PositionMesh Gebaude,9000,-250,-9000
;Die Textur des Hauses bearbeiten und verwenden
EntityTexture sky,himmel
RotateMesh Gebaude,180,0,0
;;;;;;;;;;;;;;;;;;;;;;;;;;------Die Eintsellung der Kamera auf Firstpersonsicht sicht
;;
;;
;Kameravoreinstellungen   
cam=CreateCamera()
PositionEntity cam,5100,2050,8075
;
CameraRange cam,1,80000
light=CreateLight() 
LightRange light,80000
TurnEntity light,45,45,45
EntityParent light,cam
;Einstellungen für die Sicht
TurnEntity cam,10,106,0 
PositionEntity cam,3007,1025,5845
TurnEntity cam,270,0,270
;Kollisionsabfrage
EntityType terrain,2
EntityType cam,1
EntityType Burg,3
EntityType metallpyramide,4
EntityType sky,5
Collisions 1,2,2,1 
Collisions 1,3,2,1
Collisions 1,4,2,1
Collisions 1,5,2,1
EntityOrder sky,1
;Steuerung des Spieler und der Cam
;;;;;;;;;;;;;;;;;;;;-------Hauptschleife
While Not KeyHit(1)
If MouseHit(1) Then
bullet.bullet = New bullet
bullet\obj = CopyEntity(bulletsprite,cam)
ShowEntity bullet\obj 
PositionEntity bullet\obj,EntityX(cam),EntityY(cam),EntityZ(cam)+25
EndIf
;Bewegen der Schüsse
For bullet.bullet=Each bullet
MoveEntity bullet\obj,0,0,0.06
Next   
;Mausabfrage   
RotateEntity cam,EntityPitch(cam)+MouseYSpeed(),EntityYaw(cam)-MouseXSpeed(),0 
If Not KeyDown(200)=1 Then MoveEntity cam,0,-50,0 
If KeyDown(200)=1 Then MoveEntity cam,0,0,20   
If KeyDown(203)=1 Then MoveEntity cam,-20,0,0
If KeyDown(205)=1 Then MoveEntity cam,20,0,0 
If KeyHit(35)=1 Then 
SaveBuffer BackBuffer(),"screenshots.bmp"
EndIf 
If KeyDown(1) Then End
UpdateWorld
RenderWorld
MaskImage cockpit,128,128,255
DrawImage Fadenkreutz,370,250
DrawImage cockpit,0,380
Flip
Wend
ClearWorld
End
Amd Athlon 2200+,Saphire Atlantis Radeon9800pro,1024 MB DDR RAm,40 Gb Festblatte.
'in shâ'a llâh=so Gott will
Fertiges Projekt:Invasion der Heuschrecken
 

sven123

BeitragFr, Nov 26, 2004 15:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich habe jetzt den Code verändert doch es funktioniert trotzdem nicht ich sehe keine schüsse.
Und ann habe ich noch eine Frage wiso sagst du "Komischer weise an dei Kamera ran"du bist im Cockpit eines Fliegers also in einer Egoperspektive die Schüsse sollen vomm Flugzeug ausgehen darum muss ich die Schusssprites an die Cam rankopieren.Warim funktioniert das so nicht?Code: [AUSKLAPPEN]
;zersetzen wir mal deinen code


;ein sprite laden
bulletsprite = LoadSprite("f:\bullet.jpg")

;sprite ausblenden
HideEntity bulletsprite

;erstelle type für bullets
Type bullet
   Field obj
   Field lifetime
End Type

;anfang der hauptschleife
While Not KeyHit(1)

   ;drückt man die maustaste(1) dann kopiere sprite
   If MouseHit(1) Then
      bullet.bullet = New bullet
      bullet\obj = CopyEntity(bulletsprite,cam) ;hier hängst du das sprite komischerweise an die cam ran
      ShowEntity bullet\obj 
      PositionEntity bullet\obj,EntityX#(cam),EntityY#(cam),EntityZ#(cam)
   EndIf
   For bullet.bullet=Each bullet
      MoveEntity  bullet\obj,0,0,1.0 ;hier verschiebst du jedes sprite nach HINTEN
   Next
Wend
Amd Athlon 2200+,Saphire Atlantis Radeon9800pro,1024 MB DDR RAm,40 Gb Festblatte.
'in shâ'a llâh=so Gott will
Fertiges Projekt:Invasion der Heuschrecken
 

getlose

BeitragFr, Nov 26, 2004 16:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Und ann habe ich noch eine Frage wiso sagst du "Komischer weise an dei Kamera ran"du bist im Cockpit eines Fliegers also in einer Egoperspektive die Schüsse sollen vomm Flugzeug ausgehen darum muss ich die Schusssprites an die Cam rankopieren.Warim funktioniert das so nicht?


mit EntityParent veränderst du an sich nicht die Position der Kugel.
du hängst es an das flugzeug dran, das heißt, wenn du das cockpit
bewegst, bewegt sich die Kugel mit der selben Geschwindigkeit
in die selbe Richtung.

ich code mal eben was Smile
 

getlose

BeitragFr, Nov 26, 2004 16:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Graphics3D 800,600,16,2


cam=CreateCamera() ;das cockpit
MoveEntity cam,0,3,-3
TurnEntity cam,30,0,0

sprite=CreateSprite () ;das sprite (bullet)
ScaleSprite sprite,0.2,0.2
HideEntity sprite

Type bullets
   Field sprite
   Field life
   Field speed#
   Field max_life
End Type

SetBuffer BackBuffer()
While Not KeyHit(1)
   Cls
   
   If MouseHit(1) Then add_bullet(sprite,150,0.5,cam)
   move_bullets()
   
   If KeyDown(203) Then MoveEntity cam,-0.2,0,0
   If KeyDown(205) Then MoveEntity cam,0.2,0,0
   
   
   UpdateWorld
   RenderWorld
   Flip
Wend

Function add_bullet(sprite,max_life,speed#,cam) ;erstellt ein sprite
   b.bullets=New bullets
   b\sprite=CopyEntity (sprite)
   b\max_life=max_life
   b\speed#=speed#
   PositionEntity b\sprite,EntityX(cam),EntityY(cam),EntityZ(cam)
   RotateEntity b\sprite,EntityPitch(cam),EntityYaw(cam),EntityRoll(cam)
   ShowEntity b\sprite
End Function

Function move_bullets() ;bewegt die sprites
   For b.bullets=Each bullets
      MoveEntity b\sprite,0,0,b\speed#
      b\life=b\life+1
      If b\life>b\max_life Then FreeEntity b\sprite : Delete b
   Next
End Function


so schwer ist das doch garnicht Smile
 

sven123

BeitragFr, Nov 26, 2004 19:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für den Beisüielcode ich habe ihn jetzt mal in mein Programm eingebaut allerdins funtzt das immer noch nicht so richtig.Naja das muss ich mir noch mal ne weile angucken bis ich es richtig selber kann,aber es wäre halt schon schon wenn es jetzt schon gehen würde.Warum funtzt des immer noch nicht?
Code: [AUSKLAPPEN]
Graphics3D 800,600,0,1
AppTitle "Rammjäger"
HidePointer
SetBuffer BackBuffer()
Global pivot
;Laden der Texturen und Meshs
terrain=LoadTerrain("f:\Grassclip.bmp")
text1=LoadTexture("f:\Gras.jpg")
metallpyramide=LoadMesh("f:\pyramide.x")
Gebaude=LoadMesh("f:\house.x")
Burg=LoadMesh("f:\Burg.x")
himmel=LoadTexture("f:\himmel2.jpg")
Baumstumpf=LoadMesh("f:\Baumstumpf.x")
Baumstumpf1=LoadMesh("f:\Baumstumpf.x")
Baumstumpf2=LoadMesh("f:\Baumstumpf.x")
Baumstumpf3=LoadMesh("f:\Baumstumpf.x")
cockpit=LoadImage("f:\rearcockpit1.bmp")
Fadenkreutz=LoadImage("f:\Fadenkreutz.bmp")
;
sprite=CreateSprite () ;das sprite (bullet)
ScaleSprite sprite,0.2,0.2
HideEntity sprite
;
Type bullets
   Field sprite
   Field life
   Field speed#
   Field max_life
End Type 
;Objekt richtig drehen 
;Erstellen eines Pivot für die Kollision
sky=CreateSphere(32)
FlipMesh sky
ScaleEntity  sky,7000,9000,7000
PositionEntity sky,6500,1000,6800
;Metallpyramide
PositionEntity metallpyramide,5000,20,7800
PositionEntity Baumstumpf,Rand(-2000,6000),5,Rand(-1000,9000)
PositionEntity Baumstumpf1,Rand(-2000,6000),5,Rand(-1000,9000)
PositionEntity Baumstumpf2,Rand(-2000,6000),5,Rand(-1000,9000)
PositionEntity Baumstumpf3,4200,20,9000
;
PositionEntity Burg,5000,-5,8000
;Das Terrain erstellen und Texturieren
pivot=CreatePivot()
EntityRadius pivot,0.2 
EntityTexture terrain,text1,0,0
ScaleEntity terrain,50,60,50
ScaleTexture text1,20,20
;Spielfigur posizionieren
TerrainDetail terrain,8000,True
;Position der Hand 
;Position des Hauses
PositionMesh Gebaude,9000,-250,-9000
;Die Textur des Hauses bearbeiten und verwenden
EntityTexture sky,himmel
RotateMesh Gebaude,180,0,0
;;;;;;;;;;;;;;;;;;;;;;;;;;------Die Eintsellung der Kamera auf Firstpersonsicht sicht
;;
;;
;Kameravoreinstellungen   
cam=CreateCamera()
PositionEntity cam,5100,2050,8075
;
CameraRange cam,1,80000
light=CreateLight() 
LightRange light,80000
TurnEntity light,45,45,45
EntityParent light,cam
;Einstellungen für die Sicht
TurnEntity cam,10,106,0 
PositionEntity cam,3007,1025,5845
TurnEntity cam,270,0,270
;Kollisionsabfrage
EntityType terrain,2
EntityType cam,1
EntityType Burg,3
EntityType metallpyramide,4
;Bäume
EntityType Baumstumpf,6
EntityType Baumstumpf1,6
EntityType Baumstumpf2,6
EntityType Baumstumpf3,6
;
EntityType sky,5
Collisions 1,2,2,1 
Collisions 1,3,2,1
Collisions 1,4,2,1
Collisions 1,5,2,1
Collisions 1,6,2,1
;
EntityOrder sky,1
;Steuerung des Spieler und der Cam
;;;;;;;;;;;;;;;;;;;;-------Hauptschleife
While Not KeyHit(1)
If MouseHit(1) Then add_bullet(sprite,150,0.5,cam)
move_bullets()   
;Mausabfrage   
RotateEntity cam,EntityPitch(cam)+MouseYSpeed(),EntityYaw(cam)-MouseXSpeed(),0 
If Not KeyDown(200)=1 Then MoveEntity cam,0,-15,0 
If KeyDown(200)=1 Then MoveEntity cam,0,0,20   
If KeyDown(203)=1 Then MoveEntity cam,-20,0,0
If KeyDown(205)=1 Then MoveEntity cam,20,0,0 
If KeyHit(35)=1 Then 
SaveBuffer BackBuffer(),"screenshots.bmp"
EndIf 
If KeyDown(1) Then End
UpdateWorld
RenderWorld
MaskImage cockpit,128,128,255
DrawImage Fadenkreutz,370,250
DrawImage cockpit,0,380
Flip
Wend
ClearWorld
End
;Funktionen
Function add_bullet(sprite,max_life,speed#,cam) ;erstellt ein sprite
   b.bullets=New bullets
   b\sprite=CopyEntity (sprite)
   b\max_life=max_life
   b\speed#=speed#
   PositionEntity b\sprite,EntityX(cam),EntityY(cam),EntityZ(cam)
   RotateEntity b\sprite,EntityPitch(cam),EntityYaw(cam),EntityRoll(cam)
   ShowEntity b\sprite
End Function

Function move_bullets() ;bewegt die sprites
   For b.bullets=Each bullets
      MoveEntity b\sprite,0,0,b\speed#
      b\life=b\life+1
      If b\life>b\max_life Then FreeEntity b\sprite : Delete b
   Next
End Function
Amd Athlon 2200+,Saphire Atlantis Radeon9800pro,1024 MB DDR RAm,40 Gb Festblatte.
'in shâ'a llâh=so Gott will
Fertiges Projekt:Invasion der Heuschrecken

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group