Normale Aircraft Steuerung?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

blackmaster

Betreff: Normale Aircraft Steuerung?

BeitragMi, Sep 27, 2006 19:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
Ich hab ein Jet gemoddelt und in BlitzBasic mit LoadMesh geladen.
So, und wie kann ich es so einstellen das der Jet fliegt und die Camera mitfolgt?
Also es soll auch nach rechts und nach links fliegen, so wie bei Microsoft Flight Simulator, das die camera auch ein bissel Rotiert wird wenn man nach links oder nach rechts fliegt.
Wisst ihr wie ich das am besten in B3D Realisieren kann?

Danke euch schonmal.

MFG Markus

Blitzcoder

Newsposter

BeitragMi, Sep 27, 2006 19:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Du nimmst eine Pivot. createpivot(). und wenn du den in jeder schleife an die jetpos setzt, dann kannsst du andere Objekte danach ausrichten.
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________
|°°°°°°°°°°°°°°||'""|""\__,_
|______________ ||__ |__|__ |)
|(@) |(@)"""**|(@)(@)****|(@)
 

blackmaster

BeitragMi, Sep 27, 2006 19:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke dir,
aber ich bin noch net soweit, bin erst von BlitzBasic zu Blitz3D Umgestiegen.
Könntest du mir vieleicht ein beispiel Posten?
Wäre dir sehr dankbar dafür Wink

MFG Markus
 

Matthias

BeitragMi, Sep 27, 2006 19:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Soll die Steuerung über Jojstick Tastertur oder Maus Sein?????
 

blackmaster

BeitragMi, Sep 27, 2006 20:02
Antworten mit Zitat
Benutzer-Profile anzeigen
über Tastatur Wink

Blitzcoder

Newsposter

BeitragMi, Sep 27, 2006 20:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, schau dir das hier an: http://blitzbase.de/befehle3d/createpivot.htm Da ird erklärt, was ein Pivot ist, und wie er arbeitet. Damit solltest du es hinbekommen.

MfG Blitzcoder
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________
|°°°°°°°°°°°°°°||'""|""\__,_
|______________ ||__ |__|__ |)
|(@) |(@)"""**|(@)(@)****|(@)
 

blackmaster

BeitragMi, Sep 27, 2006 21:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Cool, Ich Danke dir Wink
Ich kann bestimmt was damit anfangen, is wirklich nicht schlecht.
Aber mir ist bei B3D etwas aufgefallen, und zwar wenn ich am anfang alles lade wie in BB2D und 2 Functionen habe, z.B. Hauptmenu() und Hauptspiel()

Dann wird bei Function Hauptmenu schon alle sachen angezeigt was net sein darf.

Wie mache ich das in B3D das die andere sachen erst bei Function Hauptspiel() angezeigt wird?

Also am anfang der Funktion also über die Schleife wenn ich die sachen dort lade, dann kann es ja zu Datenverlust führen weil wenn die Function dann mehrmals ausgeführt wird, wird ja das gleiche nochmal ins Speicher gespeichert.

Könnt ihr mir vieleicht zeigen wie man das in B3D macht?

MFG Markus

Blitzcoder

Newsposter

BeitragMi, Sep 27, 2006 21:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst die Sachen entweder später laden, oder sie mit dem befhel Hideentity verstecken.http://blitzbase.de/befehle3d/hideentity.htm

Bei BLitzbasic (2D) kann man Grafiken laden, und sie erst später anzeigen. bei B3D sind alle geladen Sachen sofort im 3D Raum. Dann kannst du sie eben so verstecken. Dann sind auch automatisch alle definierten Kollisionen etc. deaktiviert(Für das eine objekt.)


MfG Blitzcoder
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________
|°°°°°°°°°°°°°°||'""|""\__,_
|______________ ||__ |__|__ |)
|(@) |(@)"""**|(@)(@)****|(@)
 

blackmaster

BeitragMi, Sep 27, 2006 21:37
Antworten mit Zitat
Benutzer-Profile anzeigen
OK, danke dir,
ich werds mal ausprobieren Very Happy

MFG Markus

StepTiger

BeitragMi, Sep 27, 2006 22:14
Antworten mit Zitat
Benutzer-Profile anzeigen
du kannst mit EntityAlpha auch Objekte verstecken, ohne kollisionen und sowas zu ersparen.

Praktisch bei Kollisionserkennung für Räder am Auto/Panzer oder sowas.
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.
 

blackmaster

BeitragSa, Sep 30, 2006 15:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo nochmal,
ich habe es jetzt folgendermaßen probiert:

Code: [AUSKLAPPEN]
Graphics3D 1024,768,16,2
SetBuffer BackBuffer()

;Terrain laden
Global terrain = LoadTerrain("Insel1HMap.jpg")
;Textur laden
Global textur = LoadTexture("Insel.jpg")

ScaleEntity terrain,1,50,1
TerrainDetail terrain,4000,True
;Terrain die Textur zuweisen
EntityTexture terrain,textur,0,1

;Den Jet laden
Global jet = LoadMesh("jet/jet.3ds")

;Eine Camera erstellen
Global camera = CreateCamera()
;Camera Positionieren
PositionEntity camera,0,0,-20
CameraClsColor camera,190,185,180
CameraFogColor camera,180,175,170
;Nebeleffekt einstellen
CameraFogRange camera,1,10

Global pitch_jet#,yaw_jet#,roll_jet#
Global camera_x#,camera_y#,camera_z#=1.0

Repeat

  ;Jet nach links Drehen
  If KeyDown(203) Then
    roll_jet=roll_jet+.09
    RotateEntity jet,pitch_jet,yaw_jet,roll_jet
  EndIf
  ;Jet nach rechts Drehen
  If KeyDown(205) Then
    roll_jet=roll_jet-.09
    RotateEntity jet,pitch_jet,yaw_jet,roll_jet
  EndIf
  ;Jet nach vorne Neigen
  If KeyDown(200) Then
    pitch_jet=pitch_jet+.09
    RotateEntity jet,pitch_jet,yaw_jet,roll_jet
  EndIf
  ;Jet nach hinten Neigen
  If KeyDown(208) Then
    pitch_jet=pitch_jet-.09
    RotateEntity jet,pitch_jet,yaw_jet,roll_jet
  EndIf

  MoveEntity jet,camera_x,camera_y,camera_z
  MoveEntity camera,camera_x,camera_y,camera_z

  RenderWorld
  UpdateWorld
  Flip
Until KeyHit(1)

End


die steuerung funktioniert soweit, aber die Kamera bleibt net immer hinter den Jet, wisst ihr ob es so richtig ist und wie ich das hinbekomme das der jet nach links fliegt, weil der dreht sich nur nach links, aber fliegt net nach link oder rechts.

Vielen Dank schonmal.

Gruss Markus
 

blackmaster

BeitragSa, Sep 30, 2006 23:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Schade das niemand weiss wie ich das machen kann.
Egal ich werds irgendwie schon hinbekommen.
 

blackmaster

BeitragSo, Okt 01, 2006 0:15
Antworten mit Zitat
Benutzer-Profile anzeigen
ich bas mal so gemacht:

Code: [AUSKLAPPEN]
Graphics3D 1024,768,32,2
SetBuffer BackBuffer()

Global terrain = LoadTerrain("heightmap.bmp")
Global text1 = LoadTexture("grass.jpg")
EntityTexture terrain,text1,0,0
ScaleEntity terrain,50,290,50
ScaleTexture text1,50,50

Global jet = LoadMesh("jet/jet.3ds")
PositionEntity jet,1000,800,1020

Global cam = CreateCamera()
MoveEntity cam,1000,800,1000
CameraFogMode cam,1
CameraRange cam,1,30000
CameraFogRange cam,100,4000
CameraFogColor cam,40,140,255
CameraClsColor cam,40,140,255
Global light = CreateLight()
TurnEntity light,45,45,0

Global cam_x#,cam_y#,cam_z#

Repeat

  If KeyDown(203) Then
    cam_z=cam_z+.20
  EndIf
  If KeyDown(205) Then
    cam_z=cam_z-.20
  EndIf

  If KeyDown(200) Then
    cam_x=cam_x+.20
  EndIf
  If KeyDown(208) Then
    cam_x=cam_x-.20
  EndIf

  RotateEntity cam,cam_x,cam_y,cam_z
  RotateEntity jet,cam_x,cam_y,cam_z
  MoveEntity cam,0,0,9
  MoveEntity jet,0,0,9

RenderWorld
Flip
Until KeyHit(1)

End


es geht bis jetzt alles, aber wenn der Jet und die Camera nach links oder rechts rotiert wird, dann fliegt der nicht nach rechts oder links.
Wisst ihr vieleicht wie ich das hinbekommen kann?

MFG Markus

FreetimeCoder

BeitragSo, Okt 01, 2006 7:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Graphics3D 1024,768,32,2
SetBuffer BackBuffer()

Global terrain = LoadTerrain("heightmap.bmp")
Global text1 = LoadTexture("grass.jpg")
EntityTexture terrain,text1,0,0
ScaleEntity terrain,50,290,50
ScaleTexture text1,50,50

Global jet =LoadMesh("jet/jet.3ds")
PositionEntity jet,1000,800,1020
Jet_Pivot=CreatePivot(jet)   ;Pivot für die Kamera erstellen
PositionEntity Jet_Pivot,0,5,-5

Global cam = CreateCamera()
MoveEntity cam,1000,800,1000
CameraFogMode cam,1
CameraRange cam,1,30000
CameraFogRange cam,100,4000
CameraFogColor cam,40,140,255
CameraClsColor cam,40,140,255
Global light = CreateLight()
TurnEntity light,45,45,0

Global cam_x#,cam_y#,cam_z#

Repeat
;jet drehen
If KeyDown(203) Then
   TurnEntity jet,0,0,1
EndIf
If KeyDown(205) Then
   TurnEntity jet,0,0,-1
EndIf

If KeyDown(200) Then
   TurnEntity jet,1,0,0
EndIf
If KeyDown(208) Then
   TurnEntity jet,-1,0,0
EndIf

;Kamera hinter dem Pivot herfliegen lassen
x#=EntityX(Jet_Pivot,1)-EntityX(Cam,1)
y#=EntityY(Jet_Pivot,1)-EntityY(Cam,1)
z#=EntityZ(Jet_Pivot,1)-EntityZ(Cam,1)
TranslateEntity Cam,X*0.4,Y*0.4,Z*0.4;Stell andere werte ein um die Stärke zu beeinflussen
;Kamera auf Jet ausrichten, mit Berücksichtigung des Z-Winkels des Jets
PointEntity Cam,Jet,EntityRoll(Jet)

MoveEntity jet,0,0,9

RenderWorld
Flip
Until KeyHit(1)

End


Nun der Code arbeitet anders, aber ich denke er ist zu gebrauchen.
Bei deinem Code drehst du den Jet und die Kamera mit dem Gleichen Winkel, deswegen sieht man mit der Kamera den Jet bei einem bestimmten Winkel nicht mehr.
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte:
Dexterity Ball (100%)
Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz
(ehemals Uboot)
PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA
 

blackmaster

BeitragSo, Okt 01, 2006 18:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Cool, ich danke dir Wink
Genau das meine ich.
Hab noch eine Frage, und zwar wenn ich jetzt schüsse mit einbauen möchte die ich in 3D Studio Max erstellt habe, kann ich doch auch mit Types erzeugen wie in B2D, oder?
Oder mach man die schüsse in 3D Welt anders?

Gruss Markus

FreetimeCoder

BeitragSo, Okt 01, 2006 19:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, das funktioniert genauso, du musst nur die 3D koordinaten berücksichtigen, also statt x und y jetz auch z.
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte:
Dexterity Ball (100%)
Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz
(ehemals Uboot)
PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA
 

blackmaster

BeitragSo, Okt 01, 2006 21:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke dir Wink

habs mal so gemacht mit den Schüssen:

Code: [AUSKLAPPEN]
Graphics3D 1024,768,32,2
SetBuffer BackBuffer()

Global terrain = LoadTerrain("heightmap.bmp")
Global text1 = LoadTexture("grass.jpg")
EntityTexture terrain,text1,0,0
ScaleEntity terrain,500,900,500
ScaleTexture text1,50,50

Global jet =LoadMesh("jet/jet.3ds")
PositionEntity jet,1000,800,1020
Jet_Pivot=CreatePivot(jet) ;Pivot für die Kamera erstellen
PositionEntity Jet_Pivot,0,5,10

Global schuss = CreateCube()

Global cam = CreateCamera()
MoveEntity cam,1000,800,1000
CameraFogMode cam,1
CameraRange cam,1,30000
CameraFogRange cam,100,4000
CameraFogColor cam,40,140,255
CameraClsColor cam,40,140,255
Global light = CreateLight()
TurnEntity light,45,45,0

Global cam_x#,cam_y#,cam_z#

Type schuss
  Field schuss_x#
  Field schuss_y#
  Field schuss_z#
End Type

Repeat
  ;jet drehen
  If KeyDown(203) Then
    TurnEntity jet,0,0,1
  EndIf
  If KeyDown(205) Then
    TurnEntity jet,0,0,-1
  EndIf

  If KeyDown(200) Then
    TurnEntity jet,.50,0,0
  EndIf
  If KeyDown(208) Then
    TurnEntity jet,-.50,0,0
  EndIf

  ;Neuer Schuss erstellen
  If KeyDown(57) Then
    s.schuss = New schuss
    s\schuss_x = X#
    s\schuss_y = Y#
    s\schuss_z = Z#
  EndIf

  ;Alle Schüsse abfragen
  For s.schuss = Each schuss
    MoveEntity schuss,s\schuss_x,s\schuss_y,s\schuss_z
    s\schuss_z = s\schuss_z + 40
  Next

  ;Kamera hinter dem Pivot herfliegen lassen
  x#=EntityX(Jet_Pivot,1)-EntityX(Cam,1)
  y#=EntityY(Jet_Pivot,1)-EntityY(Cam,1)
  z#=EntityZ(Jet_Pivot,1)-EntityZ(Cam,1)
  TranslateEntity Cam,X*0.4,Y*0.4,Z*0.4;Stell andere werte ein um die Stärke zu beeinflussen
  ;Kamera auf Jet ausrichten, mit Berücksichtigung des Z-Winkels des Jets
  PointEntity Cam,Jet,EntityRoll(Jet)

  MoveEntity jet,0,0,15

RenderWorld
Flip
Until KeyHit(1)

End


aber man sieht die rakete irgendwie net, is da vieleicht ein fehler im code?

MFG Markus

FreetimeCoder

BeitragMo, Okt 02, 2006 7:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Graphics3D 1024,768,32,2
SetBuffer BackBuffer()

Global terrain = LoadTerrain("heightmap.bmp")
Global text1 = LoadTexture("grass.jpg")
EntityTexture terrain,text1,0,0
ScaleEntity terrain,500,900,500
ScaleTexture text1,50,50

Global jet =LoadMesh("jet/jet.3ds")
PositionEntity jet,1000,800,1020
Jet_Pivot=CreatePivot(jet) ;Pivot für die Kamera erstellen
PositionEntity Jet_Pivot,0,5,10
Raketenwerfer=CreatePivot(jet);Pivot für die Schüsse erstellen
PositionEntity Raketenwerfer,0,0,-2

Global Rakete = CreateCube() ;Eine "Vorlage" erstellen
HideEntity Rakete ;Unsichtbar machen

Global cam = CreateCamera()
MoveEntity cam,1000,800,1000
CameraFogMode cam,1
CameraRange cam,1,30000
CameraFogRange cam,100,4000
CameraFogColor cam,40,140,255
CameraClsColor cam,40,140,255
Global light = CreateLight()
TurnEntity light,45,45,0

Global cam_x#,cam_y#,cam_z#

Type schuss
Field sch,uss
End Type

Repeat
;jet drehen
If KeyDown(203) Then
TurnEntity jet,0,0,1
EndIf
If KeyDown(205) Then
TurnEntity jet,0,0,-1
EndIf

If KeyDown(200) Then
TurnEntity jet,.50,0,0
EndIf
If KeyDown(208) Then
TurnEntity jet,-.50,0,0
EndIf

;Neuen Schuss erstellen
If KeyHit(57) Then ;Down würde sich nur empfehlen, wenn du ein MG machen willst
sch.schuss = New schuss
sch\uss=CopyEntity(Rakete,Raketenwerfer);Neues Objekt erstellen, indem man die Vorlage kopiert, und in den Raketenwerfer positioniert
EntityParent(sch\uss,0) ;Schuss "unabhängig machen
EndIf

;Alle Schüsse abfragen
For s.schuss = Each schuss
MoveEntity sch\uss,0,0,1 ;Verwechsel "MoveEntity" nicht mit "PositionEntity"
           ;Bei MoveEntity wird (in diesem Fall) die Z-Achse ermittelt und
           ;das Objekt daran um "1" weiterbewegt.
Next

;Kamera hinter dem Pivot herfliegen lassen
x#=EntityX(Jet_Pivot,1)-EntityX(Cam,1)
y#=EntityY(Jet_Pivot,1)-EntityY(Cam,1)
z#=EntityZ(Jet_Pivot,1)-EntityZ(Cam,1)
TranslateEntity Cam,X*0.4,Y*0.4,Z*0.4;Stell andere werte ein um die Stärke zu beeinflussen
;Kamera auf Jet ausrichten, mit Berücksichtigung des Z-Winkels des Jets
PointEntity Cam,Jet,EntityRoll(Jet)

MoveEntity jet,0,0,15

RenderWorld
Flip
Until KeyHit(1)

End


Setz dich noch ein bisschen hin, und schau dir 3D tutorials an.
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte:
Dexterity Ball (100%)
Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz
(ehemals Uboot)
PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group