[ Sanjin_JMF @ 14.06.2008. 18:19 ] @
| u levelu sve radi kako treba ali kad se mousom rotira karakter, nekon 180 stepeni, on se sam okrene za 180 stepeni i vidim mu prednju stranu.
karakter gleda naprijed i ako rotiram u desno, nakon 180 stepeni on je okrenut prema kameri. neocekivano i momentalno se okrene nakon 180 stepeni
Code:
glPushMatrix();
glTranslatef(rhCam.mView.x,0.0f,rhCam.mView.z);
rotateCharacter=(-(atan(((rhCam.mPos.x-rhCam.mView.x)/(rhCam.mPos.z-rhCam.mView.z))))/PI*180);
glRotatef( -rotateCharacter, 0.0f, 1.0f, 0.0f);
rhGame.rhPlayer.DrawCharacter();//iscrtavanje karaktera
glPopMatrix();
|
[ glorius @ 15.06.2008. 18:46 ] @
Da, to je u prirodi atan funkcije...
0 < alfa < 180
Ne mogu da se setim bas ( odavno to bese ) ali, mislim da sam problem resio koriscenjem funkcije atan2() umesto atan() zato sto atan2() funkcija vodi racuna u kojem kvadrantu je rezultat.
[Ovu poruku je menjao glorius dana 15.06.2008. u 20:10 GMT+1]
[ Sanjin_JMF @ 17.06.2008. 09:05 ] @
funkcija atan2 trazi dva parametra ,a ja ne znam koje tacno, nigdje neko konkretno objasnjenje nisam nasao
ako neko nade link ili dio koda , HVALA
[ glorius @ 17.06.2008. 09:19 ] @
Prihvata parametre x i z jedinicnog vektora koji se dobija kao razlika vektora pozicije karaktera i kamere.
vector3 vec = charPos - camPos;
vector3 normalizedVec = normalize(vec); // dobijamo jedinicni vektor pravca
float angle = atan2( normalizedVec.x, normalizedVec.z );
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.