Schüsse in einem 3d Firstpersonshooter

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

Jolinah

BeitragDo, Nov 18, 2004 22:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm, irgendwie Blick ich da nicht ganz durch Shocked


Du hast die If Mousehit(1) und For each Schleife ja gar nicht in der Hauptschleife deines Programms (falls ich das richtig gesehen habe).

Grundprinzip ist eigentlich fast immer:

Code: [AUSKLAPPEN]

Grafikmodus einstellen

Daten laden und initialisieren

Hauptschleife des Programms
  Tastatur, Maus oder Joystick abfragen
  Verarbeitung von Daten und Objekte Bewegen
  Ausgabe (Bilder,Text usw. Zeichnen,Rendern)
Ende der Hauptschleife

Programm Ende


Und die Abfrage if mousehit(1) fällt da ganz Klar in die Kategorie Maus abfragen in der Hauptschleife. Wobei die For each Schleife wahrscheinlich in die Kategorie Verarbeitung gehört Wink

Natürlich muss niemand strikt nach dem vorgehen, aber Dinge die ja jedes Frame abgefragt werden müssen sollten schon in die Programm Hauptschleife Wink


Das behebt aber wahrscheinlich deinen Fehler immer noch nicht..
Wenn die Meldung kommt sollte der Cursor ja eigentlich in der Zeile sein wo der Fehler ist. (Vorausgesetzt du bist im Debugmodus). Vielleicht kommst du dann darauf was falsch ist.

Ansonsten müsste ich die Models usw. auch alle haben, kann es sonst schlecht debuggen.
 

sven123

BeitragDo, Nov 18, 2004 23:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Funktioniert immer noch nicht!Es kommt immer noch der Variabelenfehler.Heute habe ich keine Zeit mehr aber Morgen lade ich mal alles hoch
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 19, 2004 23:10
Antworten mit Zitat
Benutzer-Profile anzeigen
So hier ist jetzt die exe der Quellcode und alles was man brauch,allerdings habe ich aus der exe den Teil mit dem Schuss entfernt weil nicht funktionsfähig der Teil ist nur im Sourcecode enthalten.
http://home.arcor.de/the_fuzzy/Test3d.zip
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

Jolinah

BeitragSa, Nov 20, 2004 1:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du den Debugmodus nicht an?

Bei mir kam nämlich sofort die Meldung das die Segmentanzahl bei der Sphere mit dem Himmel nicht richtig ist.

120 ist wohl zu gross. Wo ich es auf 32 gemacht hab ging es.

Also CreateSphere(32)


Dann kommt bei mir aber noch ein anderer Fehler, die Grastextur die du als text1 speicherst kann irgendwie nicht geladen werden. Wo ich dann die Sachen mit der Grastextur auskommentiert habe hat das ganze einwandfrei funktioniert. Ich weiss aber nicht genau wieso er die Textur nicht laden kann, vielleicht wärs besser wenn du die Quadratisch machst mit Standardgrössen wie 128x128 oder 256x256 usw.
 

sven123

BeitragSa, Nov 20, 2004 15:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Funktionier bei dir auch das mit dem Schuss wenn du alles erklärte machst.Weil wenn ich den Teil fürs scjiesen rauslasse geht alles perfekt auc wenn der Sky 120 Polygonen hat.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,lifetime
End Type   
;Objekt richtig drehen 
;Erstellen eines Pivot für die Kollision
sky=CreateSphere(120)
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)
;
For bullet.bullet Each bullet
MoveEntity  bullet\obj,0,0,25.0
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

Mit diesem Code ohne dem zeugs mit dem scjiesen funktioniert bei mi alles super!
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

eXceptION

BeitragSo, Nov 21, 2004 11:00
Antworten mit Zitat
Benutzer-Profile anzeigen
mit segmentanzahl 120 hat der Sky mehrere tausende polygone...

du wirst aber den unterschied zwischen 32 und 120 überhaupt nicht sehen können...
Norweger...

Spreche aber verdammt gut 8086
 

sven123

BeitragSo, Nov 21, 2004 12:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Gut überzeugt mache ich einfach 32 aber das löst mein Schussproblem nichr.
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

BeitragSo, Nov 21, 2004 21:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Jolinah ich habe jetzt den debugger angemacht und die Feheler mit der Sphere entfernt.Jetzt funktioniert das Programm auch mit dem schusscodeteil doch scjiesen kann ich immer noch nicht.Und wenn ich jetzt diesen code einstze um die Schüsse zu bewegen kommt wieder der Fehler Expecting Variable asiggment und das obwohl ich den Debugger an habe und die Spheren Segmente auf 31 gestellt und die Highmap auf 256*256 gestelt habe warum?
Code: [AUSKLAPPEN]
For bullet.bullet Each bullet
MoveEntity  bullet\obj,0,0,1
Next
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

BladeRunner

Moderator

BeitragMo, Nov 22, 2004 7:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Expecting Variable asiggment

Der Compiler erwartet eine Zuweisung eines Wertes/Inhaltes zu einer Variablen.
Der Zuweisungsoperator ist "=".
Code: [AUSKLAPPEN]
For bullet.bullet Each bullet

Könnte hier etwas fehlen Wink ?
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

BeitragMo, Nov 22, 2004 15:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
For bullet.bullet = Each bullet
MoveEntity bullet\obj,0,0,25.0 * frametime_sec#

If now >= bullet\destroy - 2000 Then
bullet\alpha# = bullet\alpha# -0.01
EntityAlpha bullet\obj,bullet\alpha#
ElseIf now >= bullet\destroy Then
FreeEntity bullet\obj
Delete bullet
EndIf
Next


Ach daran lags.. hab ich auch übersehen, aber wie du siehst hatte ich es richtig geschrieben Wink
 

sven123

BeitragMo, Nov 22, 2004 18:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke die Fehler sind jetzt weg aber sehe immer noch keinen schuss und der Bewegt sich auch nicht?
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

Jolinah

BeitragMo, Nov 22, 2004 18:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielleicht hast du meine Geschwindigkeiten übernommen, bei mir wurde das alles mit einem Zeitfaktor multipliziert (Dauer eines Schleifendurchganges in Sekunden).

Der Faktor hat natürlich die Geschwindigkeit enorm gebremst. Deshalb ist 25 für den Schuss vielleicht ein bisschen viel bei dir. Versuch es vielleicht mal mit 1.0 oder so.

Falls du es schon tiefer hattest könnte es höchstens wieder an einem fehlenden ShowEntity bullet\obj liegen oder der Schuss fliegt vielleicht in die falsche Richtung so das du ihn nicht siehst.
 

sven123

BeitragMo, Nov 22, 2004 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hatest recht ich habe das showentity vergessen.Jetzt habe ich es hinzugefügt,die bewegung auf 1.0 gemach und mit -1.0 habe ich auch einen Test gestartet trotzdem sehe ich keinen Schuss.
Code: [AUSKLAPPEN]
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
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

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group