Sprung von yaw=359 zu yaw=0 "abfangen"
Übersicht

HopsBetreff: Sprung von yaw=359 zu yaw=0 "abfangen" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
EDIT: verdammt, in die falsche Anfängerecke gerutscht -.- bitte verschieben! danke
EDIT2: Sorry, der yaw springt nicht von 359 auf 0 sondern von 180 auf -180 aber das problem bleibt das gleiche.. hiho ich glaube das problem lässt sich relativ einfach erkennen aber ich finde keinen weg es zu umgehen: meine 3rd person steuerung läuft so: in einem cube sitzt ein pivot der durch mausbewegung um die y-achse gedreht wird. die kamera folgt der drehung und so kann die kamera um den cube herum fliegen (zb zum betrachten der spielfigur). wenn der cube bewegt werden soll dann richtet er sich "sanft" an der drehung des pivots in ihm aus während er losfährt sodass er in kamera-blickrichtung abdreht und weiterfährt. für die ausrichtung wird die differenz von cube und pivot berechnet was bei der grenze, an der der "yaw" des pivots von 359 auf 0 springt während der cube noch einen yaw von zb 350 hat, zum problem führt: richtigerweise berechnet das programm dann die differenz von zb 350 und der cube dreht sich wild um die achse wenn die linie von 359->0 oder andersrum überschritten wird. zur veranschaulichung mal ein beispiel code: Code: [AUSKLAPPEN] ;-----Voreinstellungen------ Graphics3D 1024,768 SetBuffer BackBuffer() ;-----Voreinstellungen------ ;-----Testebene----- Global test_plane = CreatePlane() light = CreateLight() MoveEntity light, 0,100,0 ;-----Testebene----- ;---Auto--- Global car = CreateCube() EntityColor car, 120,200,120 Global car_piv = CreatePivot() Global target_piv = CreatePivot(car_piv) MoveEntity target_piv, 0,4,-10 Global camera = CreateCamera() ;---Auto--- ;-----Variablen----- Global dyaw# ;-----Variablen----- ;-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ HAUPTSCHLEIFE +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Repeat steuerung() camera_steuerung() UpdateWorld RenderWorld Text 0,0,dyaw# Flip Until KeyHit(1) End ;-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ HAUPTSCHLEIFE +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ;############################################################################## ;############################# FUNKTIONEN ##################################### ;############################################################################## ;------------------------------------------------------------------------------ Function steuerung() TurnEntity car_piv, 0, -MouseXSpeed()/10, 0 MoveMouse 1024/2,768/2 If KeyDown(17) Then MoveEntity car, 0,0,0.1 dyaw = EntityYaw(car_piv) - EntityYaw(car) TurnEntity car, 0, dyaw*0.1, 0 EndIf PositionEntity car_piv, EntityX(car), EntityY(car), EntityZ(car) End Function ;------------------------------------------------------------------------------ Function camera_steuerung() dx#=EntityX( target_piv,True )-EntityX( camera ) dy#=EntityY( target_piv,True )-EntityY( camera ) dz#=EntityZ( target_piv,True )-EntityZ( camera ) TranslateEntity camera,dx*.05,dy*.05,dz*.05 PointEntity camera, car_piv End Function ich habe im moment leider noch keine ahnung wie man das ganze lösen könnte, was mich sehr ärgert da ich ungern auf diese sehr einfach und doch schön sanfte methode verzichten will ![]() ich hoffe auf eure unterstützung, vielen dank im vorraus! |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group