wegpunkte da, aber problem

Übersicht BlitzBasic Blitz3D

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

sldier

Betreff: wegpunkte da, aber problem

BeitragDi, Nov 23, 2004 19:47
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Nov 23, 2004 20:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Vieleicht so ?

If abs(EntityZ(a)-wegpointz)<5 And abs(EntityX(a)-wegpointx)<5 Then
...neues Ziel
EndIf
 

sldier

BeitragDi, Nov 23, 2004 20:12
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Nov 23, 2004 20:22
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Nov 23, 2004 20:27
Antworten mit Zitat
Benutzer-Profile anzeigen
ja wist ja auch später für types... wollte es nur zuerst mal so testen ... ehm verlassen mit Exit oder?
 

Darren

BeitragDi, Nov 23, 2004 20:32
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Nov 23, 2004 20:34
Antworten mit Zitat
Benutzer-Profile anzeigen
ja vieleicht ich probiers jetzt erst mit types wenns nicht klappt schau ich mir das sample an

danke für eure hilfe
 

Darren

BeitragMi, Nov 24, 2004 17:22
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab mich jetzt auch auf types umgestellt ist denke ich einige praktischer aber im prinzip funktioniert das genauso wie das sample
 

sldier

BeitragMi, Nov 24, 2004 20:12
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Wink

Markus2

BeitragMi, Nov 24, 2004 20:18
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Nov 24, 2004 20:23
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Nov 24, 2004 23:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit ausführbaren Quelltext hätte ich dir besser helfen können ...
Die B3Ds könntest du ja ersetzen durch Cubes oder so ...
 

sldier

BeitragDo, Nov 25, 2004 23:08
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Nov 26, 2004 19:29
Antworten mit Zitat
Benutzer-Profile anzeigen
weiß das keiner???
es muss doch eine lösung geben...
 

Darren

BeitragFr, Nov 26, 2004 19:58
Antworten mit Zitat
Benutzer-Profile anzeigen
ich glaub es liegt einfach daran dass keiner so richtig bock hat deinen riesencode durchzuschun versuch doch mal nur die interessanten stellen zu posten Wink Wink Wink
 

sldier

BeitragFr, Nov 26, 2004 20:52
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Nov 26, 2004 22:31
Antworten mit Zitat
Benutzer-Profile anzeigen
also für mich sieht des letzte stück plausiebel aus keine ahnung was du falsch gemacht hast Confused Confused Confused
 

sldier

BeitragSa, Nov 27, 2004 0:46
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Nov 27, 2004 1:55
Antworten mit Zitat
Benutzer-Profile anzeigen
also so weit ich weiß ist bb so ziehmlich des fehlerfreiste programm was ich kenn ich denke eher dass du irgendwo mist gebaut hast Smile
 

getlose

BeitragSa, Nov 27, 2004 1:59
Antworten mit Zitat
Benutzer-Profile anzeigen
hm, du meinst wohl eher ne sehr fehlertolerante Programmier-Sprache... Smile
und doch.......ach egal Laughing

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group