Bewegung auf der Kugel
Übersicht

HaubitzeBetreff: Bewegung auf der Kugel |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
nunja noch arbeite ich an meinenm kleinen planeten ![]() hier mal die neue version mit einigen kleinen aenderungen. (vorsicht die models und texturen sind nicht enthalten) Main.bb Code: [AUSKLAPPEN] Include "includes\functions.bb"
Include "includes\geosphere.bb" Global x#,y#,z#,azimu#,incli# SeedRnd(MilliSecs()) Graphics3D 800,600,0,0 SetBuffer BackBuffer() ; Variables mousespeed#=0.1 cameraspeed#=0.00 camerasmoothness#=10 scaler#=1000.0 timer=CreateTimer(60) planet = subdiv(planet) planet = subdiv(planet) planet = subdiv(planet) planet = subdiv(planet) EntityType planet, 2, 1 EntityRadius planet, scaler PositionEntity planet,0,0,0 EntityColor planet,0,32,32 EntityFX planet,16 ScaleEntity planet,scaler,scaler,scaler planetobj=createpivot() ;EntityParent planet,planetobj UpdateNormals(planet) ;berge machen For s = 0 To CountSurfaces(planet) surface%=GetSurface(planet, i+1) For j=1 To CountVertices(GetSurface(planet, 1)) Step 1 VertexCoords surface%, j, VertexX (surface%, j)-Rnd(0.0,0.02*VertexNX(surface%,j)),VertexY (surface%, j)-Rnd(0.0,0.02*VertexNY(surface%,j)),VertexZ (surface%, j)-Rnd(0.0,0.02*VertexNZ(surface%,j)) Next Next FlipMesh(planet) UpdateNormals(planet) ;wolken wolken=CreateSphere(8) PositionEntity wolken,0,-250,0 ScaleEntity wolken,1500,1500,1500 EntityColor wolken,128,128,128 EntityFX wolken,16 EntityBlend wolken,3 EntityAlpha wolken,0.5 RotateEntity wolken,0,0,90 skytex=LoadTexture("data\clouds.jpg") EntityTexture wolken,skytex ; Camera mitte=createpivot() PositionEntity mitte,0,0,0 mitteobj=createpivot() PositionEntity mitteobj,0,0,0 player =createpivot(mitte) EntityParent player, mitte, 1 EntityType player, 1 EntityRadius player, 0.1 PositionEntity player,0,1500,0 cam=CreateCamera(player) EntityParent cam, player, 0 PositionEntity cam,0,17.5,0 CameraRange cam,0.01,10000 ;licht light0 = CreateLight(1,planetobj) RotateEntity light0, 90, 0, 0 LightColor light0, 255, 255, 125 light1 = CreateLight(1,planetobj) RotateEntity light1, -90, 0, 0 LightColor light1, 32, 32, 255 MoveMouse GraphicsWidth()/2,GraphicsHeight()/2 Dim gras(399) ;gras setzen gras(0) = createcube(mitteobj) For i=1 To 399 gras(i)=copyentity(gras(0)) RotateEntity mitteobj, Rnd(0.0,360.0),Rnd(0.0,360.0),Rnd(0.0,360.0) PositionEntity gras(i),0,1000,0 EntityParent gras(i),mitteobj EntityColor gras(i),0,125,0 ;EntityFX gras(i),1+16 Next Dim busch(399) ;buesche setzen busch(0) = LoadMesh ("data\testbusch.b3d",mitteobj) For i=1 To 399 busch(i)=copyentity(busch(0)) RotateEntity mitteobj, Rnd(0.0,360.0),Rnd(0.0,360.0),Rnd(0.0,360.0) PositionEntity busch(i),0,997,0 ScaleEntity busch(i),4,4,4 EntityParent busch(i),mitteobj EntityColor busch(i),0,125,64 ;EntityFX gras(i),1+16 Next Dim baum(399) ;baeume setzen baum(0) = LoadMesh ("data\testtree.b3d",mitteobj) For i=1 To 399 baum(i)=copyentity(baum(0)) RotateEntity mitteobj, Rnd(0.0,360.0),Rnd(0.0,360.0),Rnd(0.0,360.0) PositionEntity baum(i),0,1000,0 ScaleEntity baum(i),10,20,10 EntityParent baum(i),mitteobj EntityColor baum(i),255,125,0 ;EntityFX baum(i),1+16 Next ;set up fps counter fps_milli=MilliSecs(): fps_counter=0: update_frequency=10 Collisions 1, 2, 2, 2 While Not KeyHit(1) If EntityCollided(player, 0) <> 0 Then ;schwerkraft? MoveEntity player,-(DistX(player,mitte))/1000+10.0,-(DistY(player,mitte))/1000+10.0,-(DistZ(player,mitte))/1000+10.0 Else MoveEntity player,-(DistX(player,mitte))/1000,-(DistY(player,mitte))/1000,-(DistZ(player,mitte))/1000 End If If KeyHit(59) Then wf=1-wf : WireFrame wf ; Mousecam mx#=CurveValue(MouseXSpeed()*mousespeed,mx,camerasmoothness) my#=CurveValue(MouseYSpeed()*mousespeed,my,camerasmoothness) MoveMouse GraphicsWidth()/2,GraphicsHeight()/2 pitch#=EntityPitch(cam) yaw#=EntityYaw(player) pitch=pitch+my yaw=yaw-mx If pitch>89 Then pitch=89 If pitch<-89 Then pitch=-89 rotateEntity player,0,yaw,0 rotateEntity cam,pitch,0,0 If KeyDown(57) Then MoveEntity player,0,10,0 ;Springen If KeyDown(31) Then ;rueckwaerts azimu#=-Cos(yaw) incli#=-Sin(yaw) Else If KeyDown(17) Then ;vorwaerts azimu#=cos(yaw) incli#=Sin(yaw) Else If KeyDown(32) Then ;rechts azimu#=Sin(yaw) incli#=-cos(yaw) Else If KeyDown(30) Then ;links azimu#=-Sin(yaw) incli#=Cos(yaw) Else azimu#=0 incli#=0 EndIf turnEntity mitte, azimu#/10.0, 0.0, incli#/10.0 ;bewege player RotateEntity planetobj,0,0,MilliSecs()/100.0 UpdateWorld() RenderWorld() Text 0, 0,"Rendered Triangles:"+ TrisRendered() ; fps counter fps_counter=fps_counter+1 If fps_counter=update_frequency fps=1000/Float(((MilliSecs()-fps_milli))/update_frequency) fps_milli=MilliSecs() fps_counter=0 endif ; print fps Text 750,0,"FPS:"+fps Text 0,20,"surfaces:"+CountSurfaces(planet)+"vertices"+CountVertices(GetSurface(planet, 1)) WaitTimer timer Flip Wend FreeTimer(timer) End Functions.bb Code: [AUSKLAPPEN] ; Smoothcam
Function CurveValue#(newvalue#,oldvalue#,increments ) If increments>1 oldvalue#=oldvalue#-(oldvalue#-newvalue#)/increments If increments<=1 oldvalue=newvalue Return oldvalue# End Function Function DistX#(a%, b%) distx# = EntityX# (a%)-EntityX#(b%) Return distx# End Function Function DistY#(a%, b%) disty# = EntityY# (a%)-EntityY#(b%) Return disty# End Function Function DistZ#(a%, b%) distz# = EntityZ# (a%)-EntityZ#(b%) Return distz# End Function geosphere.bb (diese habe ich aus dem codearchiev) Code: [AUSKLAPPEN] ;Graphics3D 800,600,0,0
planet = CreateMesh() wolken = CreateMesh() ;top = CreateSurface(planet) ;mdl = CreateSurface(planet) ;bot = CreateSurface(planet) surf= CreateSurface(planet) Global rbrush = CreateBrush(255,0,0) Global gbrush = CreateBrush(0,255,0) Global bbrush = CreateBrush(0,0,255) ;PaintSurface(top, rbrush) ;PaintSurface(mdl, gbrush) ;PaintSurface(bot, bbrush) ;ScaleEntity(planet, 100, 100, 100); a# = 0.5 b# = 1.0 / (1.0 + Sqr(5.0)) ;01 0 b -a b a 0 -b a 0 ;surf=mdl v1 = vertndx(surf, 0,b,-a) v2 = vertndx(surf, b,a,0) v3 = vertndx(surf, -b,a,0) AddTriangle(surf,v1,v2,v3) ;02 0 b a -b a 0 b a 0 ;surf=mdl v1 = vertndx(surf, 0,b,a) v2 = vertndx(surf, -b,a,0) v3 = vertndx(surf, b,a,0) AddTriangle(surf,v1,v2,v3) ;03 0 b a 0 -b a -a 0 b ;surf=mdl v1 = vertndx(surf, 0,b,a) v2 = vertndx(surf, 0,-b,a) v3 = vertndx(surf, -a,0,b) AddTriangle(surf,v1,v2,v3) ;04 0 b a a 0 b 0 -b a ;surf=top v1 = vertndx(surf, 0,b,a) v2 = vertndx(surf, a,0,b) v3 = vertndx(surf, 0,-b,a) AddTriangle(surf,v1,v2,v3) ;05 0 b -a 0 -b -a a 0 -b ;surf=mdl v1 = vertndx(surf, 0,b,-a) v2 = vertndx(surf, 0,-b,-a) v3 = vertndx(surf, a,0,-b) AddTriangle(surf,v1,v2,v3) ;06 0 b -a -a 0 -b 0 -b -a ;surf=bot v1 = vertndx(surf, 0,b,-a) v2 = vertndx(surf, -a,0,-b) v3 = vertndx(surf, 0,-b,-a) AddTriangle(surf,v1,v2,v3) ;07 0 -b a b -a 0 -b -a 0 ;surf=mdl v1 = vertndx(surf, 0,-b,a) v2 = vertndx(surf, b,-a,0) v3 = vertndx(surf, -b,-a,0) AddTriangle(surf,v1,v2,v3) ;08 0 -b -a -b -a 0 b -a 0 ;surf=mdl v1 = vertndx(surf, 0,-b,-a) v2 = vertndx(surf, -b,-a,0) v3 = vertndx(surf, b,-a,0) AddTriangle(surf,v1,v2,v3) ;09 -b a 0 -a 0 b -a 0 -b ;surf=bot v1 = vertndx(surf, -b,a,0) v2 = vertndx(surf, -a,0,b) v3 = vertndx(surf, -a,0,-b) AddTriangle(surf,v1,v2,v3) ;10 -b-a 0 -a 0 -b -a 0 b ;surf=bot v1 = vertndx(surf, -b,-a,0) v2 = vertndx(surf, -a,0,-b) v3 = vertndx(surf, -a,0,b) AddTriangle(surf,v1,v2,v3) ;11 b a 0 a 0 -b a 0 b ;surf=top v1 = vertndx(surf, b,a,0) v2 = vertndx(surf, a,0,-b) v3 = vertndx(surf, a,0,b) AddTriangle(surf,v1,v2,v3) ;12 b -a 0 a 0 b a 0 -b ;surf=top v1 = vertndx(surf, b,-a,0) v2 = vertndx(surf, a,0,b) v3 = vertndx(surf, a,0,-b) AddTriangle(surf,v1,v2,v3) ;13 0 b a -a 0 b -b a 0 ;surf=mdl v1 = vertndx(surf, 0,b,a) v2 = vertndx(surf, -a,0,b) v3 = vertndx(surf, -b,a,0) AddTriangle(surf,v1,v2,v3) ;14 0 b a b a 0 a 0 b ;surf=top v1 = vertndx(surf, 0,b,a) v2 = vertndx(surf, b,a,0) v3 = vertndx(surf, a,0,b) AddTriangle(surf,v1,v2,v3) ;15 0 b -a -b a 0 -a 0 -b ;surf=bot v1 = vertndx(surf, 0,b,-a) v2 = vertndx(surf, -b,a,0) v3 = vertndx(surf, -a,0,-b) AddTriangle(surf,v1,v2,v3) ;16 0 b -a a 0 -b b a 0 ;surf=mdl v1 = vertndx(surf, 0,b,-a) v2 = vertndx(surf, a,0,-b) v3 = vertndx(surf, b,a,0) AddTriangle(surf,v1,v2,v3) ;17 0 -b -a -a 0 -b -b -a 0 ;surf=bot v1 = vertndx(surf, 0,-b,-a) v2 = vertndx(surf, -a,0,-b) v3 = vertndx(surf, -b,-a,0) AddTriangle(surf,v1,v2,v3) ;18 0 -b -a b -a 0 a 0 -b ;surf=mdl v1 = vertndx(surf, 0,-b,-a) v2 = vertndx(surf, b,-a,0) v3 = vertndx(surf, a,0,-b) AddTriangle(surf,v1,v2,v3) ;19 0 -b a -b -a 0 -a 0 b ;surf=mdl v1 = vertndx(surf, 0,-b,a) v2 = vertndx(surf, -b,-a,0) v3 = vertndx(surf, -a,0,b) AddTriangle(surf,v1,v2,v3) ;20 0 -b a a 0 b b -a 0 ;surf=top v1 = vertndx(surf, 0,-b,a) v2 = vertndx(surf, a,0,b) v3 = vertndx(surf, b,-a,0) AddTriangle(surf,v1,v2,v3) UpdateNormals(planet) Global newmesh Global newsurf Type subdivvect Field x# Field y# Field z# End Type Function subdiv(mesh) newmesh = CreateMesh() For i=1 To CountSurfaces(mesh) subdivsurf(GetSurface(mesh,i)) Next FreeEntity mesh Return newmesh End Function Function subdivsurf(surf) newsurf = CreateSurface(newmesh) tris = CountTriangles(surf)-1 For i=0 To tris c1.subdivvect = spherize(GetCoords(surf,TriangleVertex(surf,i,0))) c2.subdivvect = spherize(GetCoords(surf,TriangleVertex(surf,i,1))) c3.subdivvect = spherize(GetCoords(surf,TriangleVertex(surf,i,2))) c4.subdivvect = spheresplit(c1,c2) c5.subdivvect = spheresplit(c2,c3) c6.subdivvect = spheresplit(c3,c1) Vects2Triangle(c1,c4,c6) Vects2Triangle(c4,c2,c5) Vects2Triangle(c5,c3,c6) Vects2Triangle(c4,c5,c6) Next End Function Function spheresplit.subdivvect(c1.subdivvect, c2.subdivvect) res.subdivvect = New subdivvect res\x# = (c1\x# + c2\x#)/2.0 res\y# = (c1\y# + c2\y#)/2.0 res\z# = (c1\z# + c2\z#)/2.0 res = spherize(res) Return res End Function Function spherize.subdivvect(c.subdivvect) res.subdivvect = New subdivvect d# = 1.0/Sqr(c\x#*c\x# + c\y#*c\y# + c\z#*c\z#) res\x# = c\x# * d# res\y# = c\y# * d# res\z# = c\z# * d# Return res End Function Function GetCoords.subdivvect(surf, vert) res.subdivvect = New subdivvect res\x# = VertexX#(surf,vert) res\y# = VertexY#(surf,vert) res\z# = VertexZ#(surf,vert) Return res End Function Function Vects2Triangle(c1.subdivvect,c2.subdivvect,c3.subdivvect) v1 = vertindex(newsurf, c1) v2 = vertindex(newsurf, c2) v3 = vertindex(newsurf, c3) AddTriangle(newsurf, v1, v2, v3) End Function Function vertindex(surf, c.subdivvect) verts = CountVertices(surf) - 1 For i=0 To verts If VertexX#(surf,i)=c\x# And VertexY#(surf,i)=c\y# And VertexZ#(surf,i)=c\z# Return i EndIf Next Return AddVertex(surf, c\x#, c\y#, c\z#) End Function Function vertndx(surf, x#,y#,z#) verts = CountVertices(surf) - 1 For i=0 To verts If VertexX#(surf,i)=x# And VertexY#(surf,i)=y# And VertexZ#(surf,i)=z# Return i EndIf Next Return AddVertex(surf, x#, y#, z#) End Function ach ja nun habe ich natuerlich ein neues problem ![]() und zwar wenn ich nun die laufe und dann stehen bleibe rutsch ich ja nach "unten" dabei verschiebt sich, so nehme ich zumindest an, der player-pivot und ist somit nicht mehr "senkrecht" zum mitte-pivot. hoffe man versteht mich. (wenn ihr ne weile steht und immer bissi rutscht dann seht ihr was ich meine) ich schau natuerlich ob ich es loesen kann und wenn nich naja muss ich halt spaeter mal fragen. gruesse |
||
- Zuletzt bearbeitet von Haubitze am Sa, Okt 03, 2009 1:08, insgesamt 2-mal bearbeitet
![]() |
FireballFlameBetreff: Re: Bewegung auf der Kugel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo und willkommen hier im Forum!
Mir ist leider noch nicht ganz klar, was du erreichen willst. Die Winkel deiner Kamera (und jedes anderen 3D-Objektes) kannst du jedenfalls mit EntityPitch ![]() ![]() ![]() |
||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
Haubitze |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ja klasse wie einfach das doch geht und ich denke mal wieder an hohe mathematik ![]() hier mal mein movement Code: [AUSKLAPPEN] MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
pitch#=EntityPitch(cam) yaw#=EntityYaw(cam) If pitch>89 Then pitch=89 If pitch<-89 Then pitch=-89 RotateEntity cam,0,yaw,0 TurnEntity cam,pitch,0,0 ; Movement If KeyDown(205) cameraspeed#=.01 Else If KeyDown(203) cameraspeed#=-.01 Else cameraspeed#=0 EndIf If KeyDown(200) cameraspeed#=.01 Else If KeyDown(208) cameraspeed#=-.01 Else cameraspeed#=0 EndIf cx#=sin(yaw)*cameraspeed;*10 cz#=cos(yaw)*cameraspeed;*10 turnEntity mitte,Sin(cz)*180,0,Sin(cx)*180 wobei die entity mitte der besagt pivot ist und cam die camera naja deiner is dan doch effizienter ![]() vielen dank fuer die hilfe. jetzt werd ich mal schaun ob ich ein "strafe" noch dazubekomm ![]() |
||
Haubitze |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hm ich habe nun noch einen 3 pivot gesetz der meinen "player darstellt. eigendlich tut er nix ausser die cammera tragen :/ naja is ja erstmal wursch.
ich habe nun ein "strafe drin kann mich mit der maus umschaun... soweit klappt das ganz gut. einziges problem ist das wenn ich auf der kugel laufe und mich dann umschaue dann "renn ich ueber die ganze kugel. weis nit wie ich sagen soll hier mal mein aktueller code Code: [AUSKLAPPEN] Graphics3D 800,600,0,0
SetBuffer BackBuffer() ; Variables mousespeed#=0.1 cameraspeed#=0.00 camerasmoothness#=10 scaler#=1000.0 ;timer=CreateTimer(512) planet = createsphere(60) UpdateNormals(planet) EntityType planet, 2, 1 EntityRadius planet, scaler PositionEntity planet,0,0,0 EntityFX planet,16 ScaleEntity planet,scaler,scaler,scaler ; Camera mitte=createpivot() PositionEntity mitte,0,0,0 mitteobj=createpivot() PositionEntity mitteobj,0,0,0 player =createpivot(mitte) EntityParent player, mitte, 1 EntityType player, 1 EntityRadius player, 0.1 PositionEntity player,0,1500,0 cam=CreateCamera(player) EntityParent cam, player, 0 PositionEntity cam,0,17.5,0 CameraRange cam,0.01,10000 MoveMouse GraphicsWidth()/2,GraphicsHeight()/2 Dim cube(99) cube(0) = createcube(mitteobj) ;EntityFX cuber,1+16 For i=1 To 99 cube(i)=copyentity(cube(0)) PositionEntity cube(i),Sin(Rand(1001))*1001,Sin(Rand(1001))*1001,Sin(Rand(1001))*1001 Next While Not KeyHit(1) Collisions 1, 2, 1, 2 If EntityCollided(player, 0) = 0 MoveEntity player,-(DistX(player,mitte))/1000,-(DistY(player,mitte))/1000,-(DistZ(player,mitte))/1000 End If If KeyHit(57) Then wf=1-wf : WireFrame wf ; Mousecam mx#=CurveValue(MouseXSpeed()*mousespeed,mx,camerasmoothness) my#=CurveValue(MouseYSpeed()*mousespeed,my,camerasmoothness) MoveMouse GraphicsWidth()/2,GraphicsHeight()/2 pitch#=EntityPitch(cam) yaw#=EntityYaw(mitte) pitch=pitch+my yaw=yaw-mx If pitch>89 Then pitch=89 If pitch<-89 Then pitch=-89 ;rotateEntity mitte,0,yaw,0 rotateEntity cam,pitch,0,0 If KeyDown(32) Then cameraspeedz#= cameraspeedz#-0.1 Else If KeyDown(30) Then cameraspeedz#= cameraspeedz#+0.1 Else If KeyDown(17) Then cameraspeedx#= cameraspeedx#+0.1 Else If KeyDown(31) Then cameraspeedx#= cameraspeedx#-0.1 EndIf rotateEntity mitte,cameraspeedx,yaw,cameraspeedz# UpdateWorld() RenderWorld() col = CountCollisions(cam) Text 0, 0, "Kollision(en):" Text 300, 0, "1. Kollision mit:" + EntityCollided(planet, 1) For i = 1 To col Text 000, i * 20, "Entity=" + CollisionEntity(planet, i) Text 150, i * 20, "Surface=" + CollisionSurface(planet, i) Text 300, i * 20, "Triangle=" + CollisionTriangle(planet, i) Text 450, i * 20, "Zeit=" + CollisionTime(planet, i) Text 500, 140, "NX=" + CollisionNX(planet, i) gravx=CollisionNX(cam, i) gravy=CollisionNY(cam, i) gravz=CollisionNZ(cam, i) Next Text 0, 100, "DistX=" + DistX(player,mitte) Text 0, 120, "DistY=" + DistY(player,mitte) Text 0, 140, "DistZ=" + DistZ(player,mitte) Text 0, 160, "winkelX=" + EntityRoll(mitte) Text 0, 180, "winkelY=" + EntityPitch(mitte) Text 0, 200, "winkelZ=" + EntityYaw(mitte) localChar = GetKey() If localChar > 0 Then currentText$ = Chr$(localChar) ascii = localChar EndIf Text 0, 240, "ASCII Code: " + ascii Text 0, 260, "Eingegebener Buchstabe: " + currentText$ ;WaitTimer timer Flip Wend End ; Smoothcam Function CurveValue#(newvalue#,oldvalue#,increments ) If increments>1 oldvalue#=oldvalue#-(oldvalue#-newvalue#)/increments If increments<=1 oldvalue=newvalue Return oldvalue# End Function Function DistX#(a%, b%) distx# = EntityX# (a%)-EntityX#(b%) Return distx# End Function Function DistY#(a%, b%) disty# = EntityY# (a%)-EntityY#(b%) Return disty# End Function Function DistZ#(a%, b%) distz# = EntityZ# (a%)-EntityZ#(b%) Return distz# End Function mit wasd laufen und mit space wiremode ein/aus schalten jemand ne idee was ich falsch mache? giebt es eine funktion um die rotationsmatrix eines entity's zu resetten? also damit zb die y-achse immer nach oben zeigt. gruesse |
||
Haubitze |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
nun gut, habe mal bissi gegooglet und bin auf das spherische koordinatensystem gestossen.
zamit ist es moeglich mit dem radius r und 2 winkeln die position anzugeben. habe auch schon die umrechnungsfunktionen dafuer. Code: [AUSKLAPPEN] Function SphereToCartesianX#(r#,inc#,az#) ;az=0<azimut<360 grad
tmp#= r# * Sin(inc#) * Cos(az#) ;inc=0<inclination<180 grad Return tmp# ;r=radius End Function Function SphereToCartesianZ#(r#,inc#,az#) tmp#= r# * Sin(inc#) * Sin(az#) Return tmp# End Function Function SphereToCartesianY#(r#,inc#,az#) tmp#= r# * Cos(inc#) Return tmp# End Function somit ist es mir nun moeglich mit winkeln und einem radius die xyz koordinaten zu errechnen. das klappt auch super solange ich in eine richtung schaue. sobald ich mich aber umschaue ist die richtung nicht korrect. haette jemand ne idee wie ich das yaw der cammera in diese formel einbauen muss damit die richtungen wieder stimmen. fuer vorschlaege schon mal ein danke im vorraus. |
||
![]() |
ComNik |
![]() Antworten mit Zitat ![]() |
---|---|---|
Genereller Tipp: Vermeide Doppel bzw Trippel Posts. Nutze lieber die Edit Funktion und hebe hervor was du verändert hast. Das spart Energie und Nerven der Mods^^
Willkommen im Forum btw! lg ComNik |
||
WIP: Vorx.Engine |
Haubitze |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
oh recht hast du werds mir fuer die zukunft merken ![]() habe im ersten post mal den aktuellen stand drinnen. |
||
Meik |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also ich weiss nicht woran das lag aber ich bin nachdem ich eine weile nur geradeaus gelaufen bin durch den "Boden" gefallen und konnte innerhalb vom Planeten laufen. Konnte den Fehler aber nicht nochmal absichtlich nachmachen. | ||
Haubitze |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ja das problem habe ich ja auch.
und zwar habe ich ja diesen pivot in der mitte, der player wird immer zu diesem hingezogen. das einzige was den player daran hindert in die kugel zu fallen ist die kollisionsabfrage zwischen ihm und der kugel. habe nun aber auch keine idee wie ich das umgehen kann. koennte da ein timer helfen der den flip immer in mindestens der zeit macht wie die collisionsberechnung braucht? |
||
![]() |
Arrangemonk |
![]() Antworten mit Zitat ![]() |
---|---|---|
du kannst den fall auch verhindern indem der beim kleinsten radius der kugel grundsätzlich aufhört
einfach nur if object.z < radius object.z -- (pseudocode) den radius machst halt so, dass er noch überm normallevel vom objekt is aber nicht sichtbarund für schluchten brauchst halt dann blocking volumes bei bergen könnt er dann theoretisch noch durchfallen aber wenn der mesh in ordnung is(keine cuts oder offene stellen) müssts gehen alternativ ginge noch ein collitionsmesh, der für kollition optimiert ist und keine cuts hat (smoothing groups und textur schnitte) und unsichtbar is |
||
ingeneur |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group