Springen auf Terrain

Übersicht BlitzBasic Beginners-Corner

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

Neue Antwort erstellen

 

Stani

BeitragSo, Apr 11, 2010 13:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich ab schon ein neuen Code,der andere war der alte.Ich hab die stelle mal rausgeschnitten:
(sorry das ist noch was in der Mitte)


Code: [AUSKLAPPEN]


EntityType player,1
EntityType Lampe1,2
EntityType Lampe2,2
EntityType Wand1,2
EntityType Testbox,2


EntityBox Lampe1,20,-1,12,5,60,5
EntityBox Lampe2,40,-1,12,5,60,5
EntityBox Wand1,30,-1,14,50,50,10

EntityRadius player,2




;meshdeteis


ScaleMesh AK47,0.1,0.1,0.1
ScaleMesh Lampe1 ,0.1,0.1,0.1
ScaleMesh Lampe2 ,0.1,0.1,0.1
ScaleEntity Boden,1,1,1
ScaleEntity Wand1,.5,.5,.5
ScaleEntity Testbox,1,1,1


TurnEntity AK47,-90,90,0
TurnEntity Lampe1,-90,0,0
TurnEntity Lampe2,-90,0,0
TurnEntity Wand1,-90,0,0



EntityTexture Lampe1,lampet1
EntityTexture Lampe2,lampet1

EntityTexture AK47,gewehrt


PositionEntity Lampe1 ,20,-1,12
PositionEntity Lampe2 ,40,-1,12

PositionEntity Wand1,30,-1,14

Global Y#=2


;Colisionen

Collisions 1,2,2,2








Edit:Es geht auch auf den anderen sachen nicht.Er geht immer in sie rein.

Midimaster

BeitragSo, Apr 11, 2010 13:19
Antworten mit Zitat
Benutzer-Profile anzeigen
probier mal folgendes: lass den Player von deutlich weiter oben auf die Testbox fallen. Was passiert?

Mein Gedanke: vielleicht ist er ja schon im Mment der akt. Position durch die Oberfläche der Box hindurch, dann gibt es auch keine Collisionsmeldung mehr. Ähnlich wie einem manchmal Spieler durch das Terrain rutschen können.
 

Stani

BeitragSo, Apr 11, 2010 18:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Das geht dan auch nicht wenn ich von weiter oben springt.Ich versteh jetzt auch nicht,warum das nicht geht.Die Beispiele von der Hilfe zeigen auch sowas ,wo es aber geh,deshalb ??

Komisch ist wenn ich auf Radius gehe,dan geht das,wobei er aber von oben wegrutscht(ist ja klar).
Ich werde mal gucken wie ich eine Art Gravitation einbaue,das es immer runter geht.

Midimaster

BeitragMo, Apr 12, 2010 8:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich seh immer noch keine EntityBox-Anweisung für die TestBox bei Dir. Leider stelltst du immer nur unvollständige Code-Brocken hier rein. Man weiss nie, ob du nur vergessen hast, eine Zeile ins Forum reinzukopieren, oder aob die Zeile wirklich im code fehlt. So geht es jedenfalls:

BlitzBasic: [AUSKLAPPEN]
Graphics3D 800,600

cube=CreateCube()
EntityType Cube,2
EntityBox Cube, 0,0,0,1,1,1

Player=CreateCube()
MoveEntity Player, 0,14,0
EntityType Player,1
EntityColor Player ,255,0,0
EntityBox Player, 0,0,0,1,1,1

light=CreateLight()
RotateEntity light, 90,0,0
MoveEntity light, -4,10,-4

Camera=CreateCamera()
MoveEntity Camera,4,4,-15
Collisions 1,2,2,2

Repeat
UpdateWorld
RenderWorld
MoveEntity Player,0,-0.03,0
Flip 0
Until KeyHit(1)
 

Stani

BeitragMo, Apr 12, 2010 14:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry ,ich wolte nur die Stelle zeigen.Ich versteh das auch nicht,warum das nicht geht.Vieleicht hat das was mit dem Sprung zu tun oder mit der Cam.....ich weiß es nicht.
Hier ist der Aktuelle ganze Code:

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

Global Boden=CreatePlane()
Global player=CreateCube()
Global cam=CreateCamera(player)
Global light=CreateLight()
Global textur1=LoadTexture("Texturen/textur1.jpg")
Global ziel=LoadImage("Texturen/ziel.bmp")
Testbox=CreateCube()
EntityType Testbox,2
MaskImage ziel,0,0,0
MidHandle ziel
Global textur2=LoadTexture("Texturen/textur2.bmp")
Global Pschuss = LoadSound("Sounds\Gewehr\Schuss.wav")
Global Pnachladen=LoadSound("Sounds\Gewehr\Nachladen.wav")
Global S%
Global Schuss=Pschuss
Global Pleer = LoadSound("Sounds\Gewehr\leer.wav")
Global Zeit%,Zeitpunkt%,Schusszeit%

;meshs

Global Lampe1=LoadMesh ("Modele\Lampe\lampe.3ds")
Global Lampe2=LoadMesh ("Modele\Lampe\lampe.3ds")
Global Wand1=LoadMesh("Modele\Wand\Wand.3ds")
Global Gewehr = LoadMesh("Modele\Maschienengewehr\Maschienengewehr.3ds",player)
Global Baum1=LoadMesh("Modele\Baum\Baum1.3ds")




;misks


Global muni = LoadFont("Arial",30,1)
Global M%,M1%,M2%,M3%,ST%

M% = 1
M1 = 30
M2 = 120
M3% = 30
ST% = 0






;textures
Global gewehrt=LoadTexture("Modele\Maschienengewehr\gewehr.jpg")
Global wandt1=LoadTexture("Texturen\wandt1.jpg")
Global lampet1=LoadTexture("Modele\Lampe\lampe.jpg")
Global baumt=LoadTexture("Modele\Baum\Skin2.bmp",2)


;detais

PositionEntity Boden,0,-1,0
PositionEntity cam,0,0,0
PositionEntity player,0,0,0
PositionEntity light,10,2,10
PositionEntity Testbox,30,1,10
EntityTexture Boden,textur1
EntityTexture Wand1,wandt1
EntityTexture Baum1,baumt

MoveEntity Gewehr,.4,-.1,.3
;collisionstypen

EntityType player,1
EntityType Lampe1,2
EntityType Lampe2,2
EntityType Wand1,2


EntityBox player,0,0,0,5,5,5
EntityBox Lampe1,0,0,0,5,60,5
EntityBox Lampe2,0,0,0,5,60,5
EntityBox Wand1,0,0,0,50,50,10
EntityBox Testbox,0,0,0,5,5,5


Collisions 1,2,2,2




;meshdeteis


ScaleMesh Gewehr,0.1,0.1,0.1
ScaleMesh Lampe1 ,0.1,0.1,0.1
ScaleMesh Lampe2 ,0.1,0.1,0.1
ScaleEntity Boden,1,1,1
ScaleEntity Wand1,.5,.5,.5
ScaleEntity Baum1,0.05,0.05,0.05



TurnEntity Gewehr,-90,90,0
TurnEntity Lampe1,-90,0,0
TurnEntity Lampe2,-90,0,0
TurnEntity Wand1,-90,0,0
TurnEntity Baum1,-90,0,0



EntityTexture Lampe1,lampet1
EntityTexture Lampe2,lampet1

EntityTexture Gewehr,gewehrt


PositionEntity Lampe1 ,20,-1,12
PositionEntity Lampe2 ,40,-1,12

PositionEntity Wand1,30,-1,14

Global Y#=2


;Colisionen





;textart


SetFont muni


While Not KeyHit(1)

RenderWorld
UpdateWorld

DrawImage ziel,512,384
 
Steuerung()

 


Text 900,740, +M1 + " / " + M2

If M1 = 0 Then
M1 = M3
M2 = M2 - M3
End If


If M2 <= 0 Then  M2 = 0
If M1 = 0 Then
M3 = 0
M=0
EndIf

Flip
Wend
End



Function Steuerung()





If KeyDown(32) = 1 Then
   MoveEntity player,.2,0,0
   End If
   If KeyDown(30) = 1 Then
   MoveEntity player,-.2,0,0
   EndIf
   If KeyDown(31) = 1 Then
   MoveEntity player,0,0,-.2
   EndIf
   If KeyDown(17) = 1 Then
   MoveEntity player,0,0,.2
   EndIf
       
   If MouseDown(1) = 1 Then
   Schuss()
   EndIf

   
  If KeyDown(57) Then
ST=1
EndIf
   


If ST% =1
    If ZeitPunkt=0 Then
        ZeitPunkt=MilliSecs()
    EndIf
Else
   ;Umkehr nur auslösen, wenn noch in einer Steigphase
   If MilliSecs() < (Zeitpunkt +1500) Then
        ; setzt Timer so, dass sofort Sinkphase ist
        ZeitPunkt=MilliSecs()-1501
   EndIf
EndIf

Sprung()


   
 
     
   
   

   
   RotateEntity player,EntityPitch(player)+MouseYSpeed(),EntityYaw(player)-MouseXSpeed(),0
   
   PositionEntity player,EntityX(player),Y#,EntityZ(player)




   
   
End Function




Function Schuss()

If Schusszeit% < MilliSecs() Then
   Schusszeit% = MilliSecs() +70
   S%=S%+1
   M1% = M1% - M%
   If M2 <= 0 Then
   If M1 = 0 Then
   M2 = 0
   M3 = 0
   M=0
   EndIf
   EndIf

   PlaySound Schuss

   EndIf
   
   
   If S% = 150 Then
   Schuss = Pleer
   EndIf

End Function



Function Sprung()
    ; Funktion nur abarbeiten, wenn Sprungtimer gesetzt ist:
    If ZeitPunkt>0 Then
        If Zeit < MilliSecs() Then
            Zeit = MilliSecs() +15
            If MilliSecs() < (Zeitpunkt +300) Then
                Y#=Y#+.2
            ElseIf MilliSecs() > (Zeitpunkt +300) Then
                Y#=Y#-.2
                If Y<2 Then
                    ; alles reseten
                    Y=2
                    ZeitPunkt=0
                    ST%=0
                EndIf
            EndIf
        EndIf
    EndIf
End Function




Midimaster

BeitragMo, Apr 12, 2010 18:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum sind den deine Collisionsradien so groß?

Die Box selber ist doch genau 1x1x1 groß, oder? Und der Player auch, oder?

Und dann steht aber da:

BlitzBasic: [AUSKLAPPEN]
EntityBox player,0,0,0,5,5,5
...
EntityBox Testbox,0,0,0,5,5,5


Macht das Sinn? Da müsste der Player ja mind. von 10 Einheiten über der Box losfallen, damit die Kollision greift!
 

Stani

BeitragMo, Apr 12, 2010 20:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja das war einfach mal ein test.Ich glaub ich hab das Problemm etwas gefunden.Wenn ich Positionentity player,Entityx(player............. wegmache kann ich zwar unter den Boden aber ich bleib auf der kiste.Ich glaub ich muss die Grenze anders machen und nicht Y = 2 ,weil er dan immer 2 ist,egal ob eine Collision statfindet.
 

Stani

BeitragMo, Apr 12, 2010 20:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich kapier auch garnicht ,wie ich die Steuerung anders machen soll.Die cam schaut auf den player aber wie soll ich den steuern?? Wenn ich springen will brauch ich einen String,den ich dan bei positionentit player als Y koordinate einsetze aber dan geht das kollidiren nicht.Wie soll ich das den machen??

Midimaster

BeitragDi, Apr 13, 2010 8:40
Antworten mit Zitat
Benutzer-Profile anzeigen
was spricht denn dagegen, die EntityBox von beiden mal auf...
BlitzBasic: [AUSKLAPPEN]
EntityBox player,0,0,0,1,1,1
...
EntityBox Testbox,0,0,0,1,1,1

...zu setzen?


[EDIT]
...so ,nun habe ich mir mal die Mühe gemacht und den Code auf das wesentliche reduziert. Ohnen die ganzen Texturen und Dateien können nämlich auch andere an der Suche teilnehmen:


Außerdem hab ich mal einen Himmel eingeführt, weil ich sonst bei deiner Art von Steuerung nie wußte, wo ich bin! Und das Licht mal so gemacht, dass es etwas nach 3D aussieht. Und ich hab die Camera weit hinter den Player gesetzt, damit man den Player auch mal sieht.

Im Moment des Startes steht jetzt der Player über der TestBox und die SPACE-Taste löst dann eine Landung aus.
BlitzBasic: [AUSKLAPPEN]
Graphics3D 1024,768,32,2
SetBuffer BackBuffer()

Global Boden=CreatePlane()
Global player=CreateCube()
Global Himmel=CreateSphere(16)
FlipMesh himmel
ScaleEntity himmel, 300,30,300
EntityColor Himmel, 0,0,255



Global cam=CreateCamera(player)
CameraFogColor cam,122,122,222
CameraFogRange cam,0,70
CameraFogMode cam,1
PositionEntity cam,0,1,-7


Global light=CreateLight()
PositionEntity light,10,2,10
TurnEntity light,45,45,0




Testbox=CreateCube()
EntityColor Player,255,0,0
EntityColor Boden,0,111,0
EntityColor TestBox,110,110,255

Global M%,M1%,M2%,M3%,ST%, ZeitPunkt%, y#


PositionEntity Boden,0,-1,0

PositionEntity player,0,0,0
PositionEntity Testbox,30,0,10

;collisionstypen

EntityType player,1
EntityType Testbox,2
EntityType Boden,2

EntityRadius player,1
EntityBox Testbox,0,0,0,1,1,1
;EntityBox Boden,0,0,0,1,1,1


Collisions 1,2,2,2








PositionEntity player,30,3,10
TurnEntity Player ,0,45,0
Y#=EntityY(player)




While Not KeyHit(1)
Steuerung()

UpdateWorld
RenderWorld
Delay 15
Flip 0
Wend
End



Function Steuerung()

If KeyDown(32) = 1 Then
MoveEntity player,.2,0,0
End If
If KeyDown(30) = 1 Then
DebugLog "V:" + EntityX( player)
MoveEntity player,-.2,0,0
DebugLog EntityX( player)
EndIf
If KeyDown(31) = 1 Then
MoveEntity player,0,0,-.2
EndIf
If KeyDown(17) = 1 Then
MoveEntity player,0,0,.2
EndIf

If MouseDown(1) = 1 Then

EndIf


If KeyDown(57) Then
ST=1
EndIf



If ST% =1
If ZeitPunkt=0 Then
ZeitPunkt=MilliSecs()

EndIf
Else
;Umkehr nur auslösen, wenn noch in einer Steigphase
If MilliSecs() < (Zeitpunkt +1500) Then
; setzt Timer so, dass sofort Sinkphase ist
ZeitPunkt=MilliSecs()-1501
EndIf
EndIf

Sprung()


RotateEntity player,EntityPitch(player)+MouseYSpeed(),EntityYaw(player)-MouseXSpeed(),0

PositionEntity player,EntityX(player),Y,EntityZ(player)

End Function


Function Sprung()
; Funktion nur abarbeiten, wenn Sprungtimer gesetzt ist:
If ZeitPunkt>0 Then
If Zeit < MilliSecs() Then
Zeit = MilliSecs() +1
If MilliSecs() < (Zeitpunkt +1000) Then
Y=Y + 0.2
ElseIf MilliSecs() > (Zeitpunkt +1000) Then
Y= Y - 0.2
If Y<0 Then
; alles reseten
Y=0
ZeitPunkt=0
ST%=0
EndIf
EndIf
EndIf
EndIf
End Function


Und dabei hab ich dann auch die Problemstelle gefunden. Du hast die Reihenfolge von

-eigenen Änderungen
-UpdateWorld()
-Renderworld()

durcheinandergebracht! Es muss imm so heissen:
BlitzBasic: [AUSKLAPPEN]
While Not KeyHit(1)
Steuerung()
UpdateWorld
RenderWorld
Delay 15
Flip 0
Wend


Und siehe da: Es geht! Der Player kann auf dem Würfel landen!
 

Stani

BeitragDi, Apr 13, 2010 14:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Dankeeeeee!!!!!!
Midimaster ich danke dir ,vor allem für die Codes und die Mühe!!!

Wenn es mal was wird ,schreib ich dich zur Liste dazu:D

Midimaster

BeitragDi, Apr 13, 2010 17:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist sicher lieb gemeint, aber...

Bitte keine Erwähnung in den Kredits!!!! Das Warenzeichen "Midimaster" soll wirklich nur in unseren eigenen Produkten erscheinen.
 

Stani

BeitragSa, Apr 17, 2010 11:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry jetzt aber ich versteh das nicht!!!
Ich verzweifle schon.Wie soll man die Y Koordinate verändern und gleich zeitig nicht die Collisionen verhindern.Wenn man Y = entityy(player) oder sowas macht ist das ein fester Wert,der immer gilt auch wenn ich eine Collisionsbox habe.Wie soll man die Steuerung so machen,dass man nicht die Y koordinate sondern irgendwie ...... was verändert??

Midimaster

BeitragSa, Apr 17, 2010 12:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hä? Confused Worauf bezieht sich deine letzte Post? Ich versteh nur Bahnhof!
 

Stani

BeitragSa, Apr 17, 2010 12:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja das Problemm ist gelöst .Aber was ist wenn ich auf einer Kiste bin und noch weiter springen will.Da steht ja es soll alles resetet werden,wenn er wieder runter kommt.Aber man soll ja noch weiterspringen.Ich sag das jetztz einfach mal,ich such auch selber aber einfach mal so fals einer was weiß.
 

Stani

BeitragSo, Apr 18, 2010 11:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich wolte nur mal kurz was fragen.Das passt zwar jetzt hier nicht hin aber muss sein.Ich hab mir eine Minigun als 3ds geholt und jetzt hab ich eine Textur(.tex) also ein thumbnail.Wenn ich ihn in sonem Programm(so ne art explorer) öffne,seh ich die kleine Vorschau aber ich kann die nicht mit rechtsklick speichern.Da kommt nur Direkthilfe.
Wie kann ich jetzt diese thumbnails als jpg oder so speichern??

Midimaster

BeitragSo, Apr 18, 2010 11:59
Antworten mit Zitat
Benutzer-Profile anzeigen
hört sich danach an, als ob der Urheber der Textur nur gegen Bezahlung die Originalgröße hergibt. Du bewegst dich ohne Bezahlung auf rechtlich dünnem Eis!

Also, wenn es ein Foto von mir wäre und Du das Foto aus dem Internet speichern möchtest, aber es geht irgnedwie nicht, dann würde ich dir raten ein Bildschirmfoto mit der Taste <DRUCKEN> zu erstellen. Geht immer aus jeder Anwendung. Diese Aktion speichert das, was du aktuell auf dem Monitor siehts, in die Zwischenablage. Öffnest du jetzt ein Malprogramm, kannst Du mit <STRG> + <V> die Zwischenablage ins Malprogramm einfügen. Dort kann man dann das Foto beschneiden.

Aber bei der Textur ist das natürlich verboten!

BladeRunner

Moderator

BeitragSo, Apr 18, 2010 12:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Und warum erklärst du ihm dann wie er es sich widerrechtlich aneignen kann? Rolling Eyes
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

Plasma

Betreff: Grundlagen Kenntnisse

BeitragSo, Apr 18, 2010 12:26
Antworten mit Zitat
Benutzer-Profile anzeigen
sicherlich etwas unglücklich gemacht aber imho DAU wissen.
mfg

The Shark

BeitragSo, Apr 18, 2010 12:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube eher, dass er das meint:
user posted image
 

Stani

BeitragSo, Apr 18, 2010 13:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah ist jetzt auch egal.Ich hab auch nichts geklaut.Die Textur isz jetzt eigendlich egal,weil ich jetzt schon einfach die Waffe schwarz gemacht hab und das sieht auch gut aus.

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