Problem mit EntityCollided bei Blitz3D *GELÖST*

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

ICE TRUCK

Betreff: Problem mit EntityCollided bei Blitz3D *GELÖST*

BeitragDo, März 24, 2005 17:13
Antworten mit Zitat
Benutzer-Profile anzeigen
hi,

erstaml hab ich alle benötigten dateien auf:
www.webspace-kostenlos.com/ice-truck/maptest.exe

fertiger Pack auf:
www.webspace-kostenlos.com/ice-truck/3d.exe

BlitzBasic: [AUSKLAPPEN]

Graphics3D 800,600,32,2
SetBuffer BackBuffer()
Global cam,burg,jump,cam_p,SCENERY=2,PLAYER=1,kriech,speed=1,WALLCK=3,wallcheck
light=CreateLight()
PositionEntity light,0,200,0
LightRange light,255
cam_p=CreatePivot()
;EntityRadius cam_p,50
burg = LoadMesh(\"burg.x\")
cam = CreateCamera(cam_p)
EntityRadius cam_p, 50
EntityType burg,SCENERY
EntityType cam_p,PLAYER
CameraViewport cam,0,0,GraphicsWidth(),GraphicsHeight()
CameraFogMode cam,1
CameraFogColor cam,250,250,250
CameraFogRange cam,200,2000
Collisions PLAYER,SCENERY,2,3
Collisions WALLCK,SCENERY,2,3
PositionEntity cam_p,0,100,0
EntityPickMode burg,2
;HAUPTSCHLEIFE
Repeat
Ducken()
Move()
Until KeyDown(1)
;HAUPTSCHLEIFENENDE
;FUNKTIONEN...FUNKTIONEN...FUNKTIONEN
Function Move()
If MouseX() > 700 Or MouseX() < 100 Or MouseY() > 500 Or MouseY() < 100 Then MoveMouse 400,300
TurnEntity cam_p,0,-MouseXSpeed()/4,0/speed
If KeyDown(30) Then MoveEntity cam_p,-5/speed,0,0
If KeyDown(32) Then MoveEntity cam_p,5/speed,0,0
If KeyDown(17) Then MoveEntity cam_p,0,0,5/speed
If KeyDown(31) Then MoveEntity cam_p,0,0,-5/speed
If KeyDown(57) And jump = 0 Then Jump()
UpdateWorld
RenderWorld
Flip
Fallen()
End Function
Function Jump()
jump = 1
MoveEntity cam_p,0,25,0
Move()
jump = 1
Delay 5
If KeyDown(57) MoveEntity cam_p,0,24,0
Move()
jump = 1
Delay 5
MoveEntity cam_p,0,23,0
Move()
jump = 1
Delay 5
MoveEntity cam_p,0,20,0
Move()
jump = 1
Delay 5
MoveEntity cam_p,0,18,0
Move()
jump = 1
Delay 5
MoveEntity cam_p,0,15,0
Move()
jump = 1
Delay 5
MoveEntity cam_p,0,12,0
Move()
jump = 1
Delay 5
MoveEntity cam_p,0,9,0
Move()
jump = 1
Delay 5
MoveEntity cam_p,0,6,0
Move()
jump = 1
Delay 5
MoveEntity cam_p,0,4,0
Move()
jump = 1
Delay 5
MoveEntity cam_p,0,2,0
Delay 100
End Function
;GRAVITY
Function Fallen()
If Not EntityCollided(cam_p,SCENERY) Then
jump=1
For jumpcounter=0 To 50
MoveEntity cam_p,0,-0.1,0

; If LinePick(EntityX(cam_p),EntityY(cam_p),EntityZ(cam_p),0,-49,0) = 0 Then MoveEntity cam_p,0,-0.1,0
If EntityCollided(cam_p,SCENERY) Then
; If LinePick(EntityX(cam_p),EntityY(cam_p),EntityZ(cam_p),0,-49,0) Then TranslateEntity cam_p,0,2,0

; If LinePick(EntityX(cam_p),EntityY(cam_p),EntityZ(cam_p),0,-50,0) Then
jump=0
Goto jumpready
EndIf
Next
EndIf
.jumpready
If EntityCollided(cam_p,SCENERY) Then jump=0
End Function
;FUNKTION DUCKEN
Function Ducken()
If KeyDown(29) Then
kriech=1
speed=2
EntityRadius cam_p,25
ElseIf kriech=1 Then
If LinePick (EntityX(cam_p)+20,EntityY(cam_p),EntityZ(cam_p)+20,0,55,0,30) Then
kriech = 1
ElseIf LinePick (EntityX(cam_p)-20,EntityY(cam_p),EntityZ(cam_p)-20,0,55,0,30) Then
kriech = 1
ElseIf LinePick (EntityX(cam_p)-20,EntityY(cam_p),EntityZ(cam_p)+20,0,55,0,30) Then
kriech = 1
ElseIf LinePick (EntityX(cam_p)+20,EntityY(cam_p),EntityZ(cam_p)-20,0,55,0,30) Then
kriech = 1
Else
kriech = 0
speed=1
TranslateEntity cam_p,0,55,0
EntityRadius cam_p,50
EndIf
EndIf
End Function
End


1.Wusste ich nicht, wie das kommt, dass die person oben an der decke klebt

2.Wusste ich nicht, wie man das machen kann, dass die person keine wände "hinaufklettern" kann

ich hoffe ihr könnt mir helfen[/url]
  • Zuletzt bearbeitet von ICE TRUCK am So, März 27, 2005 20:32, insgesamt 12-mal bearbeitet

skey-z

BeitragDo, März 24, 2005 17:18
Antworten mit Zitat
Benutzer-Profile anzeigen
zunächst mal:

1. Code Einrücken
2. BB-Code verwenden

um ordnung zu schaffen

die ganzen Flips und update-/Renderworld aus den functionen verbannen, weil es reicht, wenn du diese in der Hauptschleife ausführst

Du setzt in deinen functionen jump immer auf 1, hast aber in deinem Code keine Gravitation eingebaut, also dass die Cam nach unten gezogen wird
  • Zuletzt bearbeitet von skey-z am Do, März 24, 2005 17:20, insgesamt einmal bearbeitet

ICE TRUCK

BeitragDo, März 24, 2005 17:19
Antworten mit Zitat
Benutzer-Profile anzeigen
ok, mach ich gleich

ICE TRUCK

BeitragDo, März 24, 2005 17:30
Antworten mit Zitat
Benutzer-Profile anzeigen
die gravitation steckt in move()
unter dem punkt fallen()

ICE TRUCK

BeitragDo, März 24, 2005 17:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Sagen wirs nochmal so:

1.ich wollte ein 2. pivot entity über dem spieler platzieren, so wenn er sich bückt und die taste zum bücken losgelassen wird, überprüft wird, ob er an der decke anstößt und weiter kriechen soll oder aufstehen soll.

leider verursacht die eine zeile das problem, dass er an der decke hängt und ich steh mit solchen augen ( Shocked ) davor und erkenne den fehler nicht

2.wenn man die wand berührt und springen drückt, dann kann man "hinaufklettern" (ist sehr blöd) man kann sich sogar wenn man springt und die taste richtung wand gedrückt hält, wenn große abgründe wären, diese überwinden, wäre nicht sinn der sache.

ICE TRUCK

BeitragFr, März 25, 2005 20:12
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
Function Ducken()
If KeyDown(29) Then
kriech=1
speed=2
EntityRadius cam_p,25
ElseIf Not KeyDown(29) Then
If LinePick (EntityX(cam_p)+20,EntityY(cam_p)+20,EntityZ(cam_p)+20,20,5,20) Then kriech = 1
Else kriech = 0:speed=1:TranslateEntity cam_p,0,55,0:EntityRadius cam_p,50
EndIf
End Function
End

Mr.Keks

BeitragFr, März 25, 2005 20:16
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
Function Ducken() 
If KeyDown(29) Then
kriech=1
speed=2
EntityRadius cam_p,25
ElseIf kriech=1 Then
If LinePick (EntityX(cam_p),EntityY(cam_p),EntityZ(cam_p),0,50,0) Then
kriech = 1
speed=2
EntityRadius cam_p,25
Else
kriech = 0
speed=1
TranslateEntity cam_p,0,55,0
EntityRadius cam_p,50
EndIf
EndIf
End Function
End
MrKeks.net

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group