0
현재 미니 프로젝트에서 작업 중입니다. 오브젝트에 회전 속도를 추가하여 회전 할 수 있습니다. 다음을 시도했지만 이해하지 못했습니다. 당신은 축 정렬 회전의 집합으로 방향 벡터를 사용하는Open GL 오브젝트에 회전 속도 추가하기
ObjetDeJeu::ObjetDeJeu(glm::vec3 pPosition)
: mPosition(pPosition), mOrientation(0,0,0), mSpeed()
{
}
//----------------------------------------------------------------------//
ObjetDeJeu::~ObjetDeJeu()
{
}
//----------------------------------------------------------------------//
void ObjetDeJeu::setVitesse(glm::vec2 pVitesse)
{
mVitesse = pVitesse;
}
//----------------------------------------------------------------------//
void ObjetDeJeu::addSpeed(glm::vec2 pSpeedToAdd)
{
mVitesse += pVitesseToAdd;
}
//----------------------------------------------------------------------//
glm::vec3 ObjetDeJeu::getPosition_ParentSpace()
{
return mPosition;
}
//----------------------------------------------------------------------//
glm::vec3 ObjetDeJeu::getOrientation_ParentSpace()
{
return mOrientation;
}
//----------------------------------------------------------------------//
void ObjetDeJeu::setPosition_ParentSpace(glm::vec3 pPosition)
{
mPosition = pPosition;
}
//----------------------------------------------------------------------//
void ObjetDeJeu::setOrientation_ParentSpace(glm::vec3 pOrientation)
{
mOrientation = pOrientation;
}
//----------------------------------------------------------------------//
void ObjetDeJeu::rotateZ(float angleDegree)
{
mOrientation.z += angleDegree;
if(mOrientation.z >= 180.0f)
{
mOrientation.z -= 360.0f;
}
if(mOrientation.z < -180.0f)
{
mOrientation.z += 360.0f;
}
}
//----------------------------------------------------------------------//
glm::mat4x4 ObjetDeJeu::getTransform_ParentSpace()
{
glm::mat4x4 lTransfo;
lTransfo = glm::translate(lTransfo , mPosition);
lTransfo = glm::rotate(lTransfo, mOrientation.z, glm::vec3(0,0,1));
lTransfo = glm::rotate(lTransfo, mOrientation.y, glm::vec3(0,1,0));
lTransfo = glm::rotate(lTransfo, mOrientation.x, glm::vec3(1,0,0));
return lTransfo;
}
//----------------------------------------------------------------------//
bool ObjetDeJeu::touche(ObjetDeJeu* obj)
{
}
//----------------------------------------------------------------------//
void ObjetDeJeu::deplace(float dt)
{
// vitesse * temps ecoule == deplacement.
glm::vec3 deplacement = glm::vec3(mSpeed*dt, 0);
mPosition += deplacement;
}
//----------------------------------------------------------------------//
void ObjetDeJeu::dessiner()
{
glBegin(GL_TRIANGLES);
glTexCoord2f(0.0,0.0);
glVertex3f(-1.0f,-1.0f, 0.0f);
glTexCoord2f(1.0,0.0);
glVertex3f(1.0f,-1.0f, 0.0f);
glTexCoord2f(0.5,1.0);
glVertex3f(0.0f, 3.0f, 0.0f);
glEnd();
}