wegpunkte da, aber problem
Übersicht

sldierBetreff: wegpunkte da, aber problem |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hi
habe folgende wegpunkte: Global weg0001a=10 Global weg0001b=28 Global weg0002a=-20 Global weg0002b=28 wegpointx=weg0002a wegpointz=weg0002b und folgenden code: Code: [AUSKLAPPEN] If EntityX(a)<wegpointx Then move1#=0.08 Else move1#=-0.08 If EntityZ(a)<wegpointz Then move2#=0.08 Else move2#=-0.08 If EntityZ(a)>wegpointz-5 And EntityZ(a)<wegpointz+5 And EntityX(a)>wegpointx-5 And EntityX(a)<wegpointx+5 Then If wegpointx=weg0001a Then wegpointx=weg0002a If wegpointx=weg0002a Then wegpointx=weg0001a If wegpointz=weg0001b Then wegpointz=weg0002b If wegpointz=weg0002a Then wegpointz=weg0001b EndIf aber wenn der kasten(a) den 2ten wegpunkt erreicht hat bleibt er dort und "zittert" das zittern kann ich mir erklären ... is klar wegen der ständigen bewegung aber warum bleibt er auf dem fleck...? |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vieleicht so ?
If abs(EntityZ(a)-wegpointz)<5 And abs(EntityX(a)-wegpointx)<5 Then ...neues Ziel EndIf |
||
sldier |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
nein
das ist nicht das problem ... er geht ja zum ersten und danach auch zum 2ten wegpunkt aber... wenn er beim 2ten ist soll er ja wieder zum ersten das macht er nicht ich glaube das es probleme mit If wegpointx=weg0001a Then wegpointx=weg0002a If wegpointx=weg0002a Then wegpointx=weg0001a gibt weil die abfrage nach wegpunktx 2mal vorkommt... hatte das schonmal aber warum passiert so ein problem und wie kann ichs umgehen... mit else klappts aber ich hab ja später 100te wegpunkte darum nicht gut |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
So überschreibst du ja auch den Wert den du vorher gesetzt hast
Then wegpointx=weg0002a If wegpointx=weg0002a Then wegpointx=weg0001a In einer Funk. könntest du nach dem setzen der xy Werte die Funk. verlassen . Ich denke Types sind ne gute Lösung . |
||
sldier |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ja wist ja auch später für types... wollte es nur zuerst mal so testen ... ehm verlassen mit Exit oder? | ||
Darren |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
schau dir doch mal das 3dsample von der vollversion an im ordner "si/fps"
dort is so eine waypointfunktion eingebaut zwar etwas kompliziert aber ich hab meine auch so ähnlich aufgebaut MFG DarrenSharm |
||
sldier |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ja vieleicht ich probiers jetzt erst mit types wenns nicht klappt schau ich mir das sample an
danke für eure hilfe |
||
Darren |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich hab mich jetzt auch auf types umgestellt ist denke ich einige praktischer aber im prinzip funktioniert das genauso wie das sample | ||
sldier |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ja klappt jetzt aber mit nem prob:
habe mit text ,x,y,entityx(cam) und text ,x,y+20,entityz(cam) mir die koords auf dem bildschirm bei jedem schrit der cam ausgeben lassen... soweit gehts ich brauchte halt die koords damit ich die wegpunkte setzten kann klar oder? so aber jetzt hab ich die koords angegeben aber wenn meine kasten die ablaufen stehten sie auf einmal wo ganz anders beispiel: WP1: 20/10 der kasten geht auf -8/11 oder so... und ich habe ihn nicht gedreht also bleiben die richtungen... bitte helft mir wenn ihr code braucht: Code: [AUSKLAPPEN] Print "1 - 1024/768"
Print "2 - 800/600" Print "3 - 600/480" grafikmode = Input("Grafikmodus wählen: ") If grafikmode=1 Then gfmx=1024 gfmy=768 If grafikmode=2 Then gfmx=800 gfmy=600 If grafikmode=3 Then gfmx=600 gfmy=480 If grafikmode<>1 And grafikmode<>2 And grafikmode<>3 Then gfmx=600 gfmy=480 Graphics3D gfmx,gfmy,32,2 SetBuffer BackBuffer() cam = CreateCamera() CameraClsMode cam,True,True licht= CreateLight(1) MoveEntity licht,-100,3,25 CameraViewport cam,0,0,1024,768 Global x2=-90 Global y2=0 Global xx=-110 Global yx=-10 Global zx=-10 Global live=100 Global a=CreateCube() Global c=CreateCube() MoveEntity c,10,10,20 Global cam2=CreateCube() Global drum=LoadAnimMesh("data/12.b3d") Global drux=LoadAnimMesh("data/12.b3d") Global dru=LoadMesh("data/11.b3d") Global waf1=LoadAnimMesh("data/waffe1.b3d") Global waf2=LoadAnimMesh("data/waffe2.b3d") ScaleEntity waf2,0.15,0.15,0.15 Global waf3=LoadAnimMesh("data/waffe3.b3d") ScaleEntity waf3,0.15,0.15,0.15 Global stein=LoadTexture("data/s3.jpg") EntityTexture waf3,stein Global shot=LoadTexture("data/shot.jpg") Global holz3=LoadTexture("data/h3.jpg") ScaleEntity waf1,0.15,0.15,0.15 EntityTexture waf1,holz3 Global car1=LoadAnimMesh("data/car1.b3d") Global eb6=LoadTexture("data/e6.jpg") ScaleEntity car1,0.3,0.3,0.3 EntityTexture car1,eb6 MoveEntity car1,0,-2.2,20 TurnEntity car1,-11,0,0 Global trep=LoadMesh("data/treppe.b3d") ScaleEntity trep,0.1,0.1,0.1 MoveEntity trep ,0,-2,0 Global haus=LoadMesh("data/haus.b3d") Global put=LoadAnimMesh("data/baum.b3d") Global baum=LoadTexture("data/e1.jpg") EntityTexture put,baum Animate put,1 Animate drum,1 Animate drux,1 MoveEntity dru ,0,2,10 MoveEntity drum,10,1,5 MoveEntity drux,10,7,5 ScaleEntity drum,0.05,0.05,0.05 ScaleEntity drux,0.05,0.05,0.05 MoveEntity put ,-10,-2.5,10 ScaleEntity put,0.2,0.2,0.2 ScaleEntity dru,0.1,0.1,0.1 Type tropfen Field x# Field y# Field z# Field n Field g Field t End Type Type typ Field x# Field y# Field z# Field g Field k Field wx Field wz End Type Type tropfen2 Field x# Field y# Field z# Field t End Type type_boden=1 type_spieler=2 type_stein=3 EntityType cam2,type_spieler EntityType cam,type_spieler EntityType a,type_spieler EntityType haus,type_boden EntityType car1,type_boden EntityType put,type_boden EntityType dru,type_boden EntityType trep,type_boden Animate waf1,1,0.3 Animate waf2,1,0.3 Global weapon=waf1 Global wart1$="Knüppel" Global wart2$="-keine-" ;################# wegpunkte Global weg0001a=10 Global weg0001b=28 Global weg0002a=-20 Global weg0002b=28 ;#################################################schleife While Not KeyHit(1) If KeyDown( 205 ) Then speed1=-2 koord=koord-2 an=1 Else speed1=0 If KeyDown( 203 ) Then speed2=2 koord=koord+2 Else speed2=0 If KeyDown( 208 ) Then speed3#=-0.2 Else speed3=0 If KeyDown( 200 ) Then speed4#=0.2 Else speed4=0 If KeyHit(2) Then weapon=waf1 wart1$="Knüppel" TurnEntity weapon,0,-EntityYaw(weapon),0 TurnEntity weapon,0,koord,0 EndIf If KeyHit(3) Then weapon=waf2 wart1$="Axt" TurnEntity weapon,0,-EntityYaw(weapon),0 TurnEntity weapon,0,koord,0 EndIf Collisions type_spieler,type_boden,2,3 Collisions type_stein,type_boden,2,2 Collisions type_stein,type_spieler,2,3 TurnEntity cam2,0,speed1,0 TurnEntity cam2,0,speed2,0 TurnEntity cam,0,speed1,0 TurnEntity cam,0,speed2,0 TurnEntity weapon,0,speed1,0 TurnEntity weapon,0,speed2,0 MoveEntity cam2,0,0,speed3# MoveEntity cam2,0,0,speed4# MoveEntity cam2,0,-0.2,0 PositionEntity cam,EntityX#(cam2),EntityY#(cam2)+2,EntityZ#(cam2) PositionEntity weapon,EntityX#(cam),EntityY#(cam),EntityZ#(cam) time=time+1 If time=50 Then zahl=Rand(1,2) time=0 ;################################ ki test v 1.0 If KeyHit(6) Then men.typ = New typ men\x# = 0 men\y# = -0.2 men\z# = 0 men\g = 1 men\wx = weg0002a men\wz = weg0002b EndIf For men.typ = Each typ If men\g=1 Then men\k=CopyEntity(a) EntityType men\k,type_spieler PositionEntity men\k,EntityX#(cam),EntityY#(cam),EntityZ#(cam) men\g=0 MoveEntity men\k,men\x#,men\y#,men\z# If EntityX(men\k)<men\wx Then men\x#=0.2 Else men\x#=-0.2 If EntityZ(men\k)<men\wz Then men\z#=0.2 Else men\z#=-0.2 If EntityZ(men\k)>men\wz-5 And EntityZ(men\k)<men\wz+5 And EntityX(men\k)>men\wx-5 And EntityX(men\k)<men\wx+5 Then If men\wx=weg0002a Then men\wx=weg0001a men\wz=weg0001a Exit If men\wx=weg0001a Then men\wx=weg0002a men\wz=weg0002a Exit EndIf Next ;############################### ende ki zeler=zeler+1 If zeler=3 Then zeler=0 If antim1=20 Then antim1=0 antim1=antim1+1 EndIf If KeyHit(5) Then antim1=0 SetAnimTime weapon,antim1 If KeyHit(16) Then wasser.tropfen = New tropfen wasser\x# = 0 wasser\y# = 0 wasser\z# = 0 wasser\g = 1 wasser\t = Rand(90,140) EndIf For wasser.tropfen = Each tropfen If wasser\g=1 Then wasser\n=CopyEntity(waf3) EntityType wasser\n,type_stein ScaleEntity wasser\n,0.1,0.1,0.1 TurnEntity wasser\n,0,EntityYaw(cam)+Rand(-25,25),0 PositionEntity wasser\n,EntityX#(cam),EntityY#(cam),EntityZ#(cam) wasser\g=0 MoveEntity wasser\n,wasser\x#,wasser\y#,wasser\z# If wasser\t > 70 Then wasser\t=wasser\t-1 wasser\y#=0.2 wasser\z#=0.2 EndIf If wasser\t > 1 And wasser\t <71 Then wasser\t=wasser\t-1 wasser\y#=-0.4 wasser\z#=0.2 EndIf If wasser\t <2 Then wasser\y#=0 wasser\z#=0 EntityRadius wasser\n,0.1 Next For wasser.tropfen = Each tropfen For men.typ = Each typ If MeshesIntersect(wasser\n,men\k)=True Then MoveEntity men\k,0,15,0 Next Next If KeyHit(57) Then If var=0 Then var=1 Else var=0 EndIf If var=1 Then LightColor licht,Rand(100,155),0,0 Else LightColor licht,255,255,255 UpdateWorld RenderWorld Text 10,10,"Energie: "+live+"% koordx: "+EntityX(cam) Text 10,30,"Hunger: "+stat1+"% koordz: "+EntityZ(cam) Text 10,50,"Durst: "+stat2+"%" Text 10,70,"Harndrang: "+stat3+"%" If KeyHit(15) Then If menu=0 Then menu=1 Else menu=0 EndIf ;##################menü If menu=1 Color(0,0,100) Rect 1,1,150,200,1 Color(255,255,255) Text 30,10,"Gegenstände" Text 10,30,"Waffe1: "+wart1$ Text 10,50,"Waffe2: "+wart2$ EndIf Flip Wend diesmal sogar ordentlich ![]() |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kann man : weglassen ?
Außerdem würde ich das hier in Klammer setzen ( EntityZ(men\k)>men\wz-5 And EntityZ(men\k)<men\wz+5 ) And ( EntityX(men\k)>men\wx-5 And EntityX(men\k)<men\wx+5 ) If men\wx=weg0002a Then men\wx=weg0001a men\wz=weg0001a Exit If men\wx=weg0001a Then men\wx=weg0002a men\wz=weg0002a Exit |
||
sldier |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
nein das ist schon wichtig weil es werden ja später so ca. 200-300 "leute" sein die manchmal alle gleichzeitig einen wegpunkt ansteuern... darum mache ich mit der abfrage einen größeren radius des wegpunkts sodass es nich so viel geträngel gibt...
aber die weichen ja nich nur ein bisschen von dem eigentlichen wegpunkt ab sondern ganz... |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit ausführbaren Quelltext hätte ich dir besser helfen können ...
Die B3Ds könntest du ja ersetzen durch Cubes oder so ... |
||
sldier |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hat sich erledigt (ich war wieder doof)
Code: [AUSKLAPPEN] If men\wx=weg0002a Then men\wx=weg0001a men\wz=weg0001a Exit If men\wx=weg0001a Then men\wx=weg0002a men\wz=weg0002a Exit muss natrürlich so aussehen Code: [AUSKLAPPEN] If men\wx=weg0002a Then men\wx=weg0001a men\wz=weg0001b Exit If men\wx=weg0001a Then men\wx=weg0002a men\wz=weg0002b Exit naja aber noch ne frage warum ist es so wenn ich steine werfe (mit keyhit(16))? also das script klappt nur wenn ich über bestimmte koorfelder laufe und werfe einen stein erscheint der nich wie sonst auch über der cam sondern wo ganz anders im level... ka warum könnt ihr mir helfen? |
||
sldier |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
weiß das keiner???
es muss doch eine lösung geben... |
||
Darren |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich glaub es liegt einfach daran dass keiner so richtig bock hat deinen riesencode durchzuschun versuch doch mal nur die interessanten stellen zu posten ![]() ![]() ![]() |
||
sldier |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok hier die "kurzfassung"
Code: [AUSKLAPPEN] ... Type tropfen Field x# Field y# Field z# Field n Field g Field t End Type ... type_boden=1 type_spieler=2 type_stein=3 ... While Not KeyHit(1) ... Collisions type_spieler,type_boden,2,3 Collisions type_stein,type_boden,2,2 Collisions type_stein,type_spieler,2,3 ... If KeyHit(16) Then wasser.tropfen = New tropfen wasser\x# = 0 wasser\y# = 0 wasser\z# = 0 wasser\g = 1 wasser\t = Rand(90,140) EndIf For wasser.tropfen = Each tropfen If wasser\g=1 Then wasser\n=CopyEntity(waf3) EntityType wasser\n,type_stein ScaleEntity wasser\n,0.1,0.1,0.1 TurnEntity wasser\n,0,EntityYaw(cam)+Rand(-25,25),0 PositionEntity wasser\n,EntityX#(cam),EntityY#(cam),EntityZ#(cam) wasser\g=0 MoveEntity wasser\n,wasser\x#,wasser\y#,wasser\z# If wasser\t > 70 Then wasser\t=wasser\t-1 wasser\y#=0.2 wasser\z#=0.2 EndIf If wasser\t > 1 And wasser\t <71 Then wasser\t=wasser\t-1 wasser\y#=-0.4 wasser\z#=0.2 EndIf If wasser\t <2 Then wasser\y#=0 wasser\z#=0 EntityRadius wasser\n,0.1 Next For wasser.tropfen = Each tropfen For men.typ = Each typ If MeshesIntersect(wasser\n,men\k)=True Then MoveEntity men\k,0,15,0 Next Next ... UpdateWorld RenderWorld ... Flip Wend so kürzer geht nich bitte helft mir jetzt ps: überall wo ... ist bedeutet das da code dazwischen liegt falls ihr ihn braucht schau weiter oben nach |
||
Darren |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
also für mich sieht des letzte stück plausiebel aus keine ahnung was du falsch gemacht hast ![]() ![]() ![]() |
||
sldier |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
man sagt ja ein script/code ist fehlerfrei... wenn fehler kommen dann durch den der sie geschreiben hat...
ist BB3D auch so fehlerfrei wie PHP? weil wenn nicht könnte es doch sein das gar kein fehler da ist sondern das programm den verursacht... oder ich hab doch nur irgendwo mist gebaut 8) ... |
||
Darren |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
also so weit ich weiß ist bb so ziehmlich des fehlerfreiste programm was ich kenn ich denke eher dass du irgendwo mist gebaut hast ![]() |
||
getlose |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hm, du meinst wohl eher ne sehr fehlertolerante Programmier-Sprache... ![]() und doch.......ach egal ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group