camera und collision
Übersicht

chiBetreff: camera und collision |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hallo,
kann mir mal bitte jemand weiterhelfen? heul... wie bekomme ich es hin, daß meine playercam 1.6m höhe hat und auch noch durch türen passt die 2m hoch sind.)? ich verwende einen pivot und eine cam, wobei der pivot eine höhe von 1.6 hat (entityradius cam,0.1,1.6). jetzt ist aber die tatsächliche cam-höhe nur 0.8 ;-( und wenn ich den radius 2x so groß mache, stoß ich natürlich an der türe an und komme nicht durch, aber die camerahöhe würde passen. hat jemand einen rat für mich? danke, chi |
||
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
Hallöchens,
ich hab jetzt laaange nichts mehr mit B3D gemacht, aber wie wäre es mit einer Box-Kollision? + Ava + |
||
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
wie wäre es denn, den pivot radius auf 1.6 zu machen und den camradius auf .1
du musst sie ja nur auf pivoty+1.6 setzen |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
chi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hab ich leider auch schon erfolglos probiert... mit entitybox komm ich nicht mal in die nähe der tür. trotzdem danke für deine antwort | ||
antome!!! gesperrt !!! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hier ein kleines Beispiel, meinst du sowas, die höhe kann man
bei MoveEntity cam...... einstellen Code: [AUSKLAPPEN] Graphics3D 800,600,0,2
piv = CreatePivot() cam = CreateCamera(piv) MoveEntity cam,0,2,0 ;hier die Höhe einstellen EntityRadius piv,0.8 EntityType piv,2 pl = CreatePlane() EntityColor pl,200,100,200 MoveEntity pl,0,-1,0 EntityType pl,1 c1 = CreateCube() MoveEntity c1,1,0,5 EntityColor c1,100,100,200 EntityType c1,1 c2 = CreateCube() MoveEntity c2,4,0,5 EntityColor c2,200,100,100 EntityType c2,1 While Not KeyDown(1) mxs# = 0-MouseXSpeed()/4.0 TurnEntity piv,0,mxs#,0 mys#=MouseYSpeed()/4.0 MoveMouse GraphicsWidth()/2,GraphicsHeight()/2 TurnEntity cam,mys,0,0 If MouseDown(2) Then MoveEntity piv,0,-0.01,0.25 Collisions 2,1,2,2 UpdateWorld RenderWorld Flip Wend |
||
antome |
![]() |
Fuchsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du setzt einfach den Y-Radius der Kamera hoch und den X-Radius klein.
Code: [AUSKLAPPEN] EntityRadius camera,1,2 |
||
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
???
genau das hat er doch beschrieben! wenn er den radius hoch setzt kommt er nicht unter den türen durch. niedrig ist er zu nah am boden @antome Der code nicht ein bissl lang? |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
chi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
... und wenn ich entityradius camera,1,2 habe dann fällt die camera immer auf die hälft der höhe also 1 runter. wenn die höhe des radius 4 beträgt ist die camerahöhe zwar richtig, die collision ist aber zu hoch um durch die tür zu passen. kann man nicht irgendwie den basepivot vom center verschieben?
danke,chi (ich weiß is ziemlich konfus was ich da schreibe ![]() |
||
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
wieso sollte man auch die cam als pivot nutzen?
wenn die cam nen pivot hat dann einfach via: Translateentity cam,0,1.6,0 verschieben! wenn du die cam als pivot nutzt, dann wird es eh nie was richtiges |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
chi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich poste einfach mal den ganzen code. das modell findet ihr hier: http://lunamedia.heim.at/playground.zip
ich muss dazusagen, ich arbeite erst seit 2 wochen mit b3d und bei meiner alten engine hats ne vordefinierten cam gegeben... Code: [AUSKLAPPEN] global width=800 global height=500 Global mousespeed#=0.22 Global camerasmoothness#=5.0 Graphics3D width,height,0,2 SetBuffer BackBuffer() hidepointer MoveMouse width/2,height/2 player=Createsphere() PositionEntity player,0,1.5,-3 EntityRadius player,.2,1.5 ;richtige camhöhe! ;EntityRadius player,.2,1 ;richtige collision! EntityType player,1 camera=CreateCamera(player) CameraRange camera,.1,200 cameraclscolor camera,250,250,245 Global map=LoadMesh("playground.b3d") EntityType map,2 Collisions 1,2,2,2 walksnd=loadsound("footstep.wav") SoundVolume walksnd,.1 head_bang_X#=0.015 head_bang_Y#=0.013 Collisions 1,2,2,2 While Not KeyHit(1) cls if mousedown(1) then shoe_size#=3.6:sp#=.02 else shoe_size#=3.0:sp#=.01 mxs#=CurveValue(MouseXSpeed()*mousespeed,mxs,camerasmoothness) mys#=CurveValue(MouseYSpeed()*mousespeed,mys,camerasmoothness) MoveMouse width/2,height/2 camxa#=camxa-mxs Mod 360 camya#=camya+mys If camya<-89 Then camya=-89 If camya>89 Then camya=89 RotateEntity player,0,camxa,0 RotateEntity camera,camya,0,0 MoveEntity player,0,-.05,0 walking=0 If KeyDown(203) Then: MoveEntity player,-sp,0,0 : walking=1: EndIf If KeyDown(205) Then: MoveEntity player, sp,0,0 : walking=1: EndIf If KeyDown(200) Then: MoveEntity player,0,0, sp : walking=1: EndIf If KeyDown(208) Then: MoveEntity player,0,0,-sp : walking=1: EndIf If walking=1 a1#=(a1#+shoe_size) Mod 360 EndIf PositionEntity camera,Cos(a1#)*head_bang_X#,Sin(90+a1#*2)*head_bang_Y#,0,0 UpdateWorld RenderWorld If Sin(90+a1*2)<-.85 If footstep_needed<>0 Color 255,255,255 playsound walksnd footstep_needed=0 EndIf Else footstep_needed=1 EndIf color 120,120,120 text 10,10,"Pfeiltasten = gehen, LMaus = rennen" VWait Flip 0 delay 1 Wend clearworld() End Function CurveValue#(newvalue#,oldvalue#,increments ) If increments>1 oldvalue#=oldvalue#-(oldvalue#-newvalue#)/increments If increments<=1 oldvalue=newvalue Return oldvalue# End Function ![]() |
||
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
Code: [AUSKLAPPEN] player=Createsphere()
PositionEntity player,0,1.5,-3 EntityRadius player,.2,1 EntityType player,1 camera=CreateCamera(player) CameraRange camera,.1,200 TranslateEntity camera, 0, 0.5, 0 cameraclscolor camera,250,250,245 |
||
chi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
TranslateEntiy verändert bei mir leider auch nix... komm einfach nicht durch die tuer durch wenn die kamera in augenhöhe ist... aber danke | ||
antome!!! gesperrt !!! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Habe gerade mal dein Beispiel genommen statt des Playground Mesh ein Plane gemacht und 3 Cubes so zusammengestellt das sie in deinem Beispiel eine Tür von 2.0 Höhe / Durchlass ergeben und der Player kommt prima durch. | ||
antome |
chi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hallo antome, das problem bei deiner variante ist, dass ich noch wände mit collision habe. und spätesten bei denen würde der player dann anstossen.
jedenfalls danke für deine/eure geduld mit mir ![]() ich hab mal ein kleines bild zusammengestellt mit meinem problem... abb.1) EntityRadius player, 0.2 , 1 ergib 2m höhe - die cam ist aber beim mittelpunkt also 1m über dem boden -> zu tief aber ich komme durch die tuer abb.2) EntityRadius player, 0.2 , 1.5 ergibt 3m höhe - cam ist auf richtiger augenhöhe nur ist die collision jetzt zu hoch um durch die tür zu passen abb.3) wäre der idealfall. EntityRadius wäre genau so gross wie ein mensch somit optimale collision und die cam wäre richtig positioniert! wie schaffe ich es einen EntityRadius wie in abb.3 zu bekommen also mit versetztem mittelpunkt? ![]() |
||
antome!!! gesperrt !!! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Versuch mal mit MoveEntity Camera,0,ywert Plus oder minus,0 | ||
antome |
chi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
geht leider auch nicht. durch die fakegravitation MoveEntity player,0,-.05,0 ziehts den player immer auf die eingerichtete radiushöhe | ||
antome!!! gesperrt !!! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Aber cam ist doch ein Child von player, das kann man unabhängig davon auf die richtige höhe setzen | ||
antome |
chi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
gewusst wie? ich hab keinen plan mehr! leider. hab die letzten paar tage nur nach diesem problem im inet gesucht und nix gefunden ((( | ||
antome!!! gesperrt !!! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Frage: muss dein Player eine Sphere sein ? Wenn nein, dann versuch mal einen Pivot statt ner Sphere zu nehmen, evtl. multipliziert sich die Größe der Sphere mit EntityRadius | ||
antome |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Falls du Avas code genommen hast:
Code: [AUSKLAPPEN] camera=CreateCamera(player)
CameraRange camera,.1,200 TranslateEntity camera, 0, 0.5, 0 cameraclscolor camera,250,250,245 müsste +- zu Code: [AUSKLAPPEN] camera=CreateCamera(player)
CameraRange camera,.1,200 PositionEntity camera, 0, 0.75, 0 cameraclscolor camera,250,250,245 werden. Damit hast du eine Höhe in etwa 3/4 über dem Kugelmittelpunkt, falls diese einen Radius von 1 hat. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group