2011-04-09 79 views
0

好吧,我的問題是: 我正在做2D遊戲(就像馬里奧兄弟)..我被卡在角色動作 我得到了鑰匙的實施。並得到了一個簡單的四方來測試運動......但它並沒有按照我想要的方式工作。一個2D角色的動作只能在一個方向上工作

當我按'a'我的四個移動向左移動,當我按'w'我的四個移動向上..簡單但它的作品 但如果我按'd'我的四個不會移動對..它只是以某種方式消失,雖然我已經完成了與左鍵相同的方式..並刪除左鍵,看看它是否影響x的運動沒有幫助

在此先感謝..希望你們有一個想法..我很困惑

- 正如我所說..其他鍵工作..但按d不會移動四邊形 -xpos是GLfloat,我也試過浮動..沒有變化 - 按d使我的四重奏消失一些reaso ñ


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); 
... 

CONLUSION

,如果有任何人有同樣的問題..和他只讀訥河的TUTS幾代替做所有的經驗教訓......(他用if來逃避,其中工程) 這裏是什麼ü可能得到錯誤..把平局的功能和swapbuffers的其他外和刪除..將無法正常工作,否則

和日Thnx的快速回答 解決方案:

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); 

回答

2

爲什麼你有這樣的代碼:

if (condition1) 
{ 
    instruction1 
} 
if (condition2) 
{ 
    instruction2 
} 
else 
{ 
    instruction3 
} 

注意,如果condition2計算結果爲falseinstruction3纔會執行。在你的情況下,condition2keys['D']。換句話說,如果您按D,地圖不會被刷新。這可能是問題嗎?

+0

omg ...我現在覺得很尷尬^^我剛剛刪除了其他的東西,它的工作原理..非常感謝你..它總是一樣的..我想太複雜了 – Stryke 2011-04-09 19:21:59

相關問題