EntityYaw() und moveentity sehe den fehler nicht
Übersicht

![]() |
DottakopfBetreff: EntityYaw() und moveentity sehe den fehler nicht |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Blitzer!
ganz einfaches problem: 2 Objekte 1 Objekt(Positions Cube) sorgt für die bewegung und positionierung auf dem boden 2 Objekt(Spieler Mesh) was sich mittels maus frei drehen lässt und nur zum "umsehen" dient Spieler ist als child an Position Cube geheftet. Problem: mittels EntityYaw ermittle ich die aktulle Yaw ausrichtung meines Spieler Meshes und passe meinen Positions Cube diesen Winkel an. Somit wird die Drehung des Spielers erreicht, und mit Moveentity bewege ich den Position Cube in den vorgegebenen Winkel. Und hier ist das Problem... laut debug anzeigen hat mein Cube genau den gleichen winkel wie das Spieler mesh, und sollte sich eigentlich in die Richtung bewegen in die geschaut wird. Nur irgendwie dreht der Cube irgendwie langsamer... und ich renn nur ansatzweise in die gewünschte richtung. Nur wie kann das Sein ? cube hat doch die selbe winkel ausrichtung wie das mesh. Gibts da evt. Probleme wenn ich child und parent unabhängig von einander rumdrehe ? Hier code : (leider bereits auf netzwerk getrimmt) PlayerModel(UDP_PLAYERID) ist das Mesh / Child PlayerPosBox(UDP_PLAYERID) ist der Cube / Parent Code: [AUSKLAPPEN] ;MOVEMENT ;WASD Tasten If KeyDown(17) Then MoveEntity PlayerPosBox( UDP_PlayerID ) ,0,0,+1:move=1 If KeyDown(31) Then MoveEntity PlayerPosBox( UDP_PlayerID ) ,0,0,-1:move=1 If KeyDown(30) Then MoveEntity PlayerPosBox( UDP_PlayerID ) ,-1,0,0:move=1 If KeyDown(32) Then MoveEntity PlayerPosBox( UDP_PlayerID ) ,+1,0,0:move=1 yaw= EntityYaw(PlayerPosBox(UDP_PlayerID));check für bewegungsänderung ;Vectoren ermitteln fTurnVelocityX = fTurnVelocityX*fTurnVelocityFactor fTurnVelocityY = fTurnVelocityY*fTurnVelocityFactor fTurnVelocityX = fTurnVelocityX - fTurnSpeed*MausXSpeed fTurnVelocityY = fTurnVelocityY + fTurnSpeed*MausYSpeed RotateEntity PlayerModel(UDP_PlayerID), EntityPitch(PlayerModel(UDP_PlayerID)), EntityYaw(PlayerModel(UDP_PlayerID)) + fTurnVelocityX, EntityRoll(PlayerModel(UDP_PlayerID)) ;winkel prüfen evt anpassen If EntityPitch(PlayerModel(UDP_PlayerID)) + fTurnVelocityY < 80 Then If EntityPitch(PlayerModel(UDP_PlayerID)) + fTurnVelocityY > -80 Then RotateEntity PlayerModel(UDP_PlayerID), EntityPitch(PlayerModel(UDP_PlayerID)) + fTurnVelocityY, EntityYaw(PlayerModel(UDP_PlayerID)), EntityRoll(PlayerModel(UDP_PlayerID)) Else RotateEntity PlayerModel(UDP_PlayerID), -80, EntityYaw(PlayerModel(UDP_PlayerID)), EntityRoll(PlayerModel(UDP_PlayerID)) fTurnVelocityY = 0 EndIf Else RotateEntity PlayerModel(UDP_PlayerID), 80, EntityYaw(PlayerModel(UDP_PlayerID)), EntityRoll(PlayerModel(UDP_PlayerID)) fTurnVelocityY = 0 EndIf debug_wert=EntityYaw(PlayerModel(UDP_PlayerID)) debug_wert2=EntityYaw(PlayerPosBox(UDP_PlayerID)) debug_wert3=(EntityYaw(PlayerModel(UDP_PlayerID))+ fTurnVelocityX) RotateEntity PlayerPosBox(UDP_PlayerID), EntityPitch(PlayerPosBox(UDP_PlayerID)), EntityYaw(PlayerModel(UDP_PlayerID)), EntityRoll(PlayerPosBox(UDP_PlayerID)) MoveMouse GraphicsWidth()/2, GraphicsHeight()/2 entscheidend ist die stelle ganz unten. wo ich den cube rotiere nur mit den winkelinformationen des meshes 2x die winkel des cubes und 1x winkel(yaw) des Spieler meshes Code: [AUSKLAPPEN] RotateEntity PlayerPosBox(UDP_PlayerID), EntityPitch(PlayerPosBox(UDP_PlayerID)), EntityYaw(PlayerModel(UDP_PlayerID)), EntityRoll(PlayerPosBox(UDP_PlayerID)) Sorry ich steh auf dem Schlauch ... debug_wert1 bis 3 sind alle gleich |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
- Zuletzt bearbeitet von Dottakopf am Do, Nov 18, 2010 20:26, insgesamt 3-mal bearbeitet
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
A) Du drehst die Box auf den Winkel der Box... also keine Änderung? PlayerModel <> PlayerPosBox
B) Es wäre vielleicht schneller aber auf alle Fälle übersichtlicher diese ganzen Winkel-Funktionsaufrufe in Variablen zu packen. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
nein ich drehe die box auf
pitch = box yaw = mesh roll = box möchte ja nur den yaw winkel an das mesh anpassen, während pitch und roll unverändert bleiben. Sonst wäre es ja einfach XD |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
hm...also ich habs jetzt zum laufen gebracht... und so wie es jetzt gelöst wurde gefällt es mir eigentlich garnicht.
das Rotatenetity was aus winkel cube und winkel mesh einen winkel für den cube festlegt wurde nun durch eine zeile ersetzt die anhand der mausgeschwindigkeit den winkel direkt auf den cube setzt. also wurde aus der zeile Code: [AUSKLAPPEN] RotateEntity PlayerModel(UDP_PlayerID), EntityPitch(PlayerModel(UDP_PlayerID)), EntityYaw(PlayerModel(UDP_PlayerID)) + fTurnVelocityX, EntityRoll(PlayerModel(UDP_PlayerID))
ein billiges Code: [AUSKLAPPEN] TurnEntity PlayerPosBox(UDP_PlayerID),0,(0-MausXSpeed/3),0
keine ahnung warum es nicht funktioniert hat... aber dann muss ich halt jetzt wieder etwas pfuschen ![]() Danke für eure mühe!! |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group