Хорошо, моя проблема в том, что я работаю над 2D-игрой (например, Mario Bros.) ... и я застрял в движении персонажа, я реализовал ключи ... и получил простой квад для тестирования движения ... нона самом деле это не работает так, как я хочу.
, когда я нажимаю 'a', мой квадроцикл перемещается влево, когда я нажимаю 'w', мой квадроцикл перемещается вверх ... просто, но это работает, но если я нажимаю 'd 'мой квадроцикл просто не двигается вправо ... он просто как-то исчезает, хотя я сделал это так же, как левая клавиша ... и удалив левую клавишу, чтобы посмотреть, не влияет ли это на движение х
спасибо заранее .. надеюсь, у вас, ребята, есть идея ... я в замешательстве
- как я уже сказал ... другие клавиши работают ... но нажатие клавиши d не перемещает квад -- xpos - это GLfloat, я также пробовал float .. без изменений - нажатие d заставляет мой квад по какой-то причине исчезнуть
if (active){
if (keys[VK_ESCAPE])
{
done=TRUE;
}
if (keys['W'])
{
if(!toggle)
{
ypos=ypos+1.0;
toggle=1;
}
}
if (!keys['W'])
{
ypos=0.0;toggle=0;
}
if (keys['A'])
{
t_key=1;
xpos1=xpos1-0.1f;
}
if (keys['D'])
{
t_key=0;
xpos2=xpos2-0.1f;
}
else
{
DrawWorld();
DrawChar();
SwapBuffers(hDC);
}
}
int DrawChar(GLvoid){
glLoadIdentity(); // Reset The Current Modelview Matrix
GLfloat xtrans;
if(t_key){
xtrans=xpos1;
xpos2=xpos1;
}
else{
xtrans=xpos2;
xpos1=xpos2;
}
GLfloat ytrans=ypos;
glTranslatef(0.0f,0.0f,-30.0f); // move 5 units into the screen
glTranslatef(xtrans,ytrans,0.0f);
...
ЗАКЛЮЧЕНИЕ
если есть кто-то еще с такими же проблемами ... и он только прочитал несколько цитат Нехе вместо того, чтобы делать все урокиns .. (он использовал if только для escape, который работает) вот что вы, вероятно, ошиблись .. поместите функции рисования и swapbuffers вне else и удалите их .. иначе работать не будет
иСпасибо за быстрый ответ решение:
if (active){
if (keys[VK_ESCAPE])
{
done=TRUE;
}
if (keys['W'])
{
if(!toggle)
{
ypos=ypos+1.0;
toggle=1;
}
}
if (!keys['W'])
{
ypos=0.0;toggle=0;
}
if (keys['A'])
{
t_key=1;
xpos1=xpos1-0.1f;
}
if (keys['D'])
{
t_key=0;
xpos2=xpos2-0.1f;
}
DrawWorld();
DrawChar();
SwapBuffers(hDC);