explosion wie?

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2, 3  Weiter

Neue Antwort erstellen

Nicdel

BeitragSa, Jan 02, 2010 19:37
Antworten mit Zitat
Benutzer-Profile anzeigen
"terrain" ist nicht global.
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7
 

masterman123

BeitragSa, Jan 02, 2010 20:42
Antworten mit Zitat
Benutzer-Profile anzeigen
danke nicdel jetzt get es,aber weißt du ob in der funktion noch was stehen kann

Code: [AUSKLAPPEN]
Function flugzeug()
For i=1 To CountCollisions(plane1)
      If CollisionEntity(plane1, i)= terrain
      Print "Sie haben verloren hahaha,drücke escape"
      HideEntity plane1
      WaitKey()
      EndIf
   Next
   End Function


kann man dann noch irgendwie das einfügen

Code: [AUSKLAPPEN]
If CollisionEntity(plane1, i)= gegner1
      Print "gewonnen"
                Hideentity gegner1
      WaitKey()
     EndIf

Midimaster

BeitragSa, Jan 02, 2010 21:25
Antworten mit Zitat
Benutzer-Profile anzeigen
ja natürlich, du hast es total verstanden... das kann da rein


BlitzBasic: [AUSKLAPPEN]
Function flugzeug()
For i=1 To CountCollisions(plane1)
If CollisionEntity(plane1, i)= terrain
Print "Sie haben verloren hahaha,drücke escape"
HideEntity plane1
WaitKey()
ElseIf CollisionEntity(plane1, i)= gegner1
Print "gewonnen"
HideEntity gegner1
WaitKey()
EndIf
Next
End Function
 

masterman123

BeitragSo, Jan 03, 2010 11:31
Antworten mit Zitat
Benutzer-Profile anzeigen
danke:)
aber das waitkey() funktioniert nicht es geht ohne knopf drücken weiter und er zeigt den satz nur ganz kurz an,aber für mein spiel brauch ich es nicht will es nur wissen

Eingeproggt

BeitragSo, Jan 03, 2010 14:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Kurz vor Waitkey() noch ein FlushKeys setzen sollte helfen.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

masterman123

BeitragSo, Jan 03, 2010 14:56
Antworten mit Zitat
Benutzer-Profile anzeigen
danke eingeproggt
kann man so was machen
Code: [AUSKLAPPEN]
ElseIf CollisionEntity(plane1, i)= landebahn And gegneranzahl=0 Then
      Print "hallo"
      HideEntity plane1

wenn ja dann wie?
so geht es nähmlich nicht
  • Zuletzt bearbeitet von masterman123 am So, Jan 03, 2010 15:06, insgesamt einmal bearbeitet

Midimaster

BeitragSo, Jan 03, 2010 15:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Eigentlich wird soetwas statt mit WAITKEY() besser so gemacht:


In dem Moment der Kollision wird ein "Flag" gesetzt:

Das ist einfach eine Vairable, die die ganze Zeit 0 ist und im Moment der Kollision auf 1 gesetzt wird. Durch dieses Flag kannst Du in anderen Teilen deines Programm Dinge geschehen lassen:


BlitzBasic: [AUSKLAPPEN]

While
Cls
DrawImage Hintergrund...
....
If FlugzeugGetroffen=1 Then
Drawtext ""Sie haben verloren hahaha,drücke escape"...
EndIf
If GegnerGetroffen=1 Then
Drawtext ""Du hast gewonnen"....
EndIf
Wend
BlitzBasic: [AUSKLAPPEN]
Function Flugzeug()
For i=1 To CountCollisions(plane1)
If CollisionEntity(plane1, i)= terrain
HideEntity plane1
FlugzeugGetroffen=1
ElseIf CollisionEntity(plane1, i)= gegner1
HideEntity gegner1
GegnerGetroffen=1
EndIf
Next
End Function
  • Zuletzt bearbeitet von Midimaster am So, Jan 03, 2010 15:18, insgesamt einmal bearbeitet
 

masterman123

BeitragSo, Jan 03, 2010 15:08
Antworten mit Zitat
Benutzer-Profile anzeigen
ok
ich habs jetzt so
Code: [AUSKLAPPEN]
For i=1 To CountCollisions(plane1)
      If CollisionEntity(plane1, i)= terrain
         HideEntity plane1
         flugzeuggetroffen=1
         WaitKey()
      ElseIf CollisionEntity(plane1,  i)= gegner1
         HideEntity gegner1
         gegneranzahl=1

Midimaster

BeitragSo, Jan 03, 2010 15:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Was ist denn "Landebahn" genau? Kam bisher in deinem Code gar nicht vor...
 

masterman123

BeitragSo, Jan 03, 2010 15:22
Antworten mit Zitat
Benutzer-Profile anzeigen
hab ich hinzugefügt hier der aktuellle code
Code: [AUSKLAPPEN]
Graphics3D 800,600,32,1;SETZT UMGEBUNG IN 3D (800=HÖHE,600=BREITE,32=BITANZAHL,1=GROßBILDSCHIRM
SetBuffer BackBuffer();ÄNDERT BUFFER IN HINTERGRUNDBUFFER

Global gegneranzahl=2
Global flugzeuggetroffen=0

Const map=1
Const player=2
Const gegner=3
Const gegnera=4
Const landebahn1=5

;;;;terrain
Global terrain=LoadTerrain("heightmap1.bmp");LADET TERRAIN
text1=LoadTexture("gras.bmp");LADET TEXTUR
text2=LoadTexture ("terrain text2.bmp");WIE OBEN
text3=LoadTexture("mapt1.bmp");WIE OBEN
EntityType terrain,map
EntityTexture terrain,text1;VERBINDET TEXTUR(ERSTE SCHICHT)
EntityTexture terrain,text2,0,1;WIE OBEN(ZWEITE SCHICHT)
EntityTexture terrain,text3,0,2;WIE OBEN(DRITTE SCHICHT)
ScaleEntity terrain,20,500,20;ÄNDERT SKALLIERUNG EINES 3D OBJEKTS
PositionEntity terrain,-20*512,0,-20*512
ScaleTexture text2,3,3;WIE OBEN BLOß EINER TEXTUR

;;;;wasser
water=CreatePlane();MACHT EINE EBENE
watertext=LoadTexture ("water2.bmp",2);TEXTUR LADEN
EntityTexture water, watertext;VERBINDET TEXTUR
ScaleTexture watertext,100,100;ÄNDERT TEXTUR
MoveEntity water,0,10,0;BEWEGT DAS 3D OBJEKT ZU DEN KOORDINATEN
EntityAlpha water,0.5;MACHT DAS 3D OBJEKT UNSICHTBAR(0=UNSICHTBAR;1=SICHTBAR

;;;;camera
cam=CreateCamera();MACHT EINE KAMERA
PositionEntity cam,1000,400,1000
CameraFogMode cam,1;NEBEL AN/AUS
CameraRange cam,1,900000;MIN/MAX KAMERAENTFERNUNG
CameraFogRange cam,100,4000;NEBEL ENTFERNUNG EINER KAMERA
CameraFogColor cam,40,140,255;FARBE DES NEBELS
CameraClsColor cam,40,140,255;ÄNDERT HINTERGRUNDFARBE DER KAMERA


;;;;;licht
light=CreateLight();MACHT EIN LICHT
TurnEntity light,45,45,0;DREHT DAS OBJEKT UM EINEN RELATIVEN WINKEL

;;;;;plane
Global plane1=LoadMesh("biplane.x");flugzeug laden
PositionEntity plane1,1000,400,1050;positionieren
TurnEntity plane1,0,180,0
EntityType plane1,player
hi=LoadTexture("wings.bmp");texture laden
hallo=LoadTexture("bihull.bmp");wie oben
EntityTexture plane1,hi,0,0
EntityTexture plane1,hallo,0,1

;;;;;pivot
Piv=CreatePivot(plane1):PositionEntity Piv,0,0,10;macht einen pivot und positioniert ihn

;;;gegner
Global gegner1=LoadMesh("biplane.x")
PositionEntity gegner1,1000,400,1100
EntityType gegner1,gegner
EntityTexture gegner1,hi,0,0
EntityTexture gegner1,hallo,0,1
;;;;;gegner2
Global gegner2=LoadMesh("biplane.x")
PositionEntity gegner2,2000,400,1300
EntityType gegner2,gegnera
EntityTexture gegner2,hi,0,0
EntityTexture gegner2,hallo,0,1

;;;;landebahn
landebahn=CreateCube()
PositionEntity landebahn,1000,50,1050
ScaleEntity landebahn,90,50,50
EntityType landebahn,landebahn1
EntityAlpha landebahn,1

Collisions player,map,2,2
Collisions player,gegner,2,1
Collisions player,gegnera,2,1
Collisions player,landebahn1,2,2

While Not KeyHit(1)

If KeyDown(200) Then TurnEntity plane1,1,0,0
   If KeyDown(208) Then TurnEntity plane1,-1,0,0
   If KeyDown(205) Then TurnEntity plane1,0,0,2
   If KeyDown(203) Then TurnEntity plane1,0,0,-2
   If KeyDown(57) Then MoveEntity plane1,0,0,-1
   MoveEntity plane1,0,0,-0.5

   
   camsp#=.05;nur eine zahl ,dadurch muss man nicht immer die zahl eingeben
   dx#=(EntityX(Piv,1)-EntityX(cam,1))*camsp#;dx# =von piv die x koordinaten- die von der cam *camsp
   dy#=(EntityY(Piv,1)-EntityY(cam,1))*camsp#;das gleiche bloß mit y
   dz#=(EntityZ(Piv,1)-EntityZ(cam,1))*camsp#;das gleiche bloß mit z
   TranslateEntity cam,dx#,dy#,dz#;verschiebt das objekt um die koordienaten
   Yaw#=DeltaYaw(cam,plane1)*camsp#;liefert den y winkel zwischen den objekten *camsp
   Pitch#=DeltaPitch(cam,plane1)*camsp#;wie oben bloß x winkel *camsp
   TurnEntity cam,Pitch#,Yaw#,0;dreht die cam in den errechneten winkel

   UpdateWorld()
   flugzeug()
   RenderWorld()
   
   Text 20,50, gegneranzahl + "=wie viel gegner du einfangen musst"
   

If gegneranzahl=1 Then Text 0,100,"Einen noch!"
If gegneranzahl=0 Then Text 300,300, "Jetzt wieder zur Landebahn!!!"
Text 300,0,"Du musst die Flugzeuge einfangen!"
Text 200,20,"Steuern mit den Pfeiltasten und Nitro mit der Leertaste!"
If flugzeuggetroffen=1 Then Text 300,300,"Sie haben verloren hahaha,press escape!"
EndIf
If landebahn=2 Then Text 300,300,"Sie haben Gewonnen!!!"

Flip
Wend
ClearWorld
End

Function flugzeug()
   For i=1 To CountCollisions(plane1)
      If CollisionEntity(plane1, i)= terrain
         HideEntity plane1
         flugzeuggetroffen=1
         WaitKey()
      ElseIf CollisionEntity(plane1,  i)= gegner1
         HideEntity gegner1
         gegneranzahl=1
      ElseIf CollisionEntity(plane1, i)= gegner2
         HideEntity gegner2
         gegneranzahl=0
      ElseIf CollisionEntity(plane1, i)= landebahn And gegneranzahl=0 Then
      HideEntity plane1
      landebahn=2
      EndIf
   Next
End Function


und das mein ichCode: [AUSKLAPPEN]
ElseIf CollisionEntity(plane1, i)= landebahn And gegneranzahl=0 Then
      HideEntity plane1
      landebahn=2
      EndIf

ob das irgend wie geht

Midimaster

BeitragSo, Jan 03, 2010 15:35
Antworten mit Zitat
Benutzer-Profile anzeigen
klar geht das, warum sollte es nicht gehen.

Allerdings würde ich dann das Flugzeug nicht verschwinden lassen. Ist ja alles gutgegangen.

Und du nimmst das Wort "Landebahn" für einen CUBE und eine Variable. Das würde ich so nicht machen!!!
Nenn die Variable lieber LandeBahnErreicht%
BlitzBasic: [AUSKLAPPEN]
...
ElseIf CollisionEntity(plane1, i)= landebahn Then
If gegneranzahl=0 Then
; gelandet und mission erfüllt
LandeBahnErreicht=2
Else
; wenigstens heil gelandet
LandeBahnErreicht=1
EndIf
......
 

masterman123

BeitragSo, Jan 03, 2010 15:43
Antworten mit Zitat
Benutzer-Profile anzeigen
ok hab ich gemacht
wenn die variable landebahnerreicht heißt muss es hier anders heißen

Code: [AUSKLAPPEN]
   ElseIf CollisionEntity(plane1, i)= landebahn
         If gegneranzahl=0 Then
            landebahnerreicht=2

jetzt wollte ich noch einen schuss einfügen der mit dem gegner kollidiert
ich hatte ja nen schuss aber man konnte keine kollision erstellen,hab aber keine ahnung wie
und noch ne tankanzeige die wenn sie leer ist das dann das flugzeug stehen bleibt,aber weiß ich glaub schon wie

Midimaster

BeitragSo, Jan 03, 2010 16:08
Antworten mit Zitat
Benutzer-Profile anzeigen
aber das ist doch genau das gleiche wie flugzeug mit gegner?

diesmal halt der Vergleich "Schuss mit Gegner"....

oben im code eine...

Code: [AUSKLAPPEN]
Collisions schuss, gegner,2,1




beim erstellen des Schuss...

Code: [AUSKLAPPEN]
EntityType neuerSchuss,Schuss


...oder wie immer dein Schuss-Entitiy heißt


und dann die Abfrage:
Code: [AUSKLAPPEN]
If CollisionEntity(neuerSchuss, i)= Gegner1


u.s.w


Tank-Anzeige
machst Du über die Zeit, die das Flugzeug schon in der Luft ist. z.b. kann es 10 min (=10x60x1000 msec)
in der Luft bleiben dann ist der Tank noch

((10x60x1000) - ( Millisecs() - Startzeit ) ) / (10x60x1000) * 100

Prozent voll
 

masterman123

BeitragSo, Jan 03, 2010 17:37
Antworten mit Zitat
Benutzer-Profile anzeigen
der type
Code: [AUSKLAPPEN]
Type Schuss
Field Entity
End Type


also hab einen schuss als funktion

Code: [AUSKLAPPEN]
Function NeuerSchuss()
   S.Schuss = New Schuss
   S\Entity =CreateSphere(21)
   ScaleEntity S\Entity, 0.1, 0.1, 0.5
   PositionEntity S\Entity,EntityX#(plane1),EntityY#(plane1),EntityZ#(plane1)
   RotateEntity S\Entity,EntityPitch#(plane1), EntityYaw#(plane1), EntityRoll#(plane1)
   EntityRadius S\Entity, 0.1
   EntityType S\Entity,shot
   Magazin = Magazin - 1
End Function


dann das

Code: [AUSKLAPPEN]
   For T.Schuss = Each Schuss
   MoveEntity T\Entity,0,0, 1;bewegt das objekt
   RotateEntity T\Entity,180,0,0
   EntityParent T\Entity,plane1

If EntityDistance (T\Entity,  plane1) > 50 Then;ist der abstand vom schuss und dem flugzeug höher als 50 dann
   HideEntity T\Entity;versteckt das objekt
   Delete T.Schuss;löscht das objekt
EndIf
Next


die funktion wollte ich machen,aber ich weiß nicht was da rein kommt

Code: [AUSKLAPPEN]
Function schuss()
   For i=1 To CountCollisions(Schuss)
      If CollisionEntity(Schuss, i)= gegner1
         HideEntity gegner1
         gegneranzahl=1
      ElseIf CollisionEntity(S.Schuss, i)= gegner2
         HideEntity gegner2
         gegneranzahl=2
      EndIf
   Next
End Function         

kann mir jemand helfen

das magazin
Code: [AUSKLAPPEN]
Global Magazin = 100

das wird dann angezeigt mit

Code: [AUSKLAPPEN]
Text 20,80,Magazin

das mit der tankanzeige hab ich nicht ganz begriffen aber jetzt hab ichs so gemacht

Code: [AUSKLAPPEN]
Global tankanzeige=2500


Code: [AUSKLAPPEN]
If KeyDown(57) Then
   MoveEntity plane1,0,0,-1
   tankanzeige=tankanzeige-1
   EndIf


Code: [AUSKLAPPEN]
Text 20,60,tankanzeige
If tankanzeige=<0 Then Text 300,320,"Sie haben zu lange gebraucht!!"

Midimaster

BeitragSo, Jan 03, 2010 17:45
Antworten mit Zitat
Benutzer-Profile anzeigen
sieht doch schon ganz gut aus! was geht denn nicht?

Prüfe 3 Phasen: Schuss löst sich? Schuss fliegt? Schuss trifft?

schalte zum testen die nachkommenden Phasen erst einmal aus.

So näherst Du dich ev. Fehlern
 

masterman123

BeitragSo, Jan 03, 2010 17:59
Antworten mit Zitat
Benutzer-Profile anzeigen
die kollision zeigt einen fehler an musste mal ein fügen die funktion ud alles bei bb3d ist ja ne kugel
und der schuss ist ja parent zum flugzeug und geht immer hinter her aber ich möchte es so haben das er sich löst und weiter fliegt und ich fliege wo anders hin aber ohne parent geht es garnicht
und er ist an einer falschen stellen sieht nicht gut aus

Midimaster

BeitragSo, Jan 03, 2010 18:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Der schuss darf nicht child zum flugzeug sein. Du mußt nur die akt. GLOBAL-Koordinaten des Flugzeugs als Startkoordinaten für die Kugel verwenden.

Oder mach ihn zunächst Child und dann löse die Verbindung wieder.
 

masterman123

BeitragSo, Jan 03, 2010 18:20
Antworten mit Zitat
Benutzer-Profile anzeigen
haste nen beispiel

Midimaster

BeitragSo, Jan 03, 2010 18:22
Antworten mit Zitat
Benutzer-Profile anzeigen
leider hab ich jetzt zu wenig zeit dazu und muss auch bald weg....

aber das macht dir bestimmt auch gleich gerne ein anderer hier, ansonsten gerne wieder heute nacht.
 

masterman123

BeitragSo, Jan 03, 2010 18:24
Antworten mit Zitat
Benutzer-Profile anzeigen
ok danke
hat jemand eine verbesserung meiner steuerung ist nen bischen schlecht manch mal ist die kamera schief und das flugzeug gerade

Code: [AUSKLAPPEN]
   camsp#=.05
   dx#=(EntityX(Piv,1)-EntityX(cam,1))*camsp#
   dy#=(EntityY(Piv,1)-EntityY(cam,1))*camsp#
   dz#=(EntityZ(Piv,1)-EntityZ(cam,1))*camsp#
   TranslateEntity cam,dx#,dy#,dz#
   Yaw#=DeltaYaw(cam,plane1)*camsp#
   Pitch#=DeltaPitch(cam,plane1)*camsp#
   TurnEntity cam,Pitch#,Yaw#,0

Gehe zu Seite Zurück  1, 2, 3  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group