簡體   English   中英

當位圖在Allegro中跟隨另一個時閃爍

[英]Flickering when a bitmap follows another in Allegro

我正在使用帶有Allegro 5的C開發2D游戲。現在,我正在編碼游戲中敵人的移動,一個跟隨玩家的位圖(坐標X和Y)。 盡管它在X軸上完美運行,但通常無法朝Y軸上的播放器移動,導致位圖閃爍而不是移動。

這是我正在使用的代碼:

if(*xEnemy < *x){
    *xEnemy += 3;
}else if(*xEnemy > *x){
    *xEnemy -= 3;
}else if(*yEnemy < *y){
    *yEnemy += 3;
}else if (*yEnemy > *y){
    *yEnemy -= 3;
}

如果我使用ifs而不是else ifs會很好用,但是,敵人會沿着對角線行走,而這並不是我為游戲所計划的。 顯然,問題出在其他地方 ,那么對他們來說可行的替代方案是什么?

例如,您可以查看相對距離的絕對值來決定在x或y方向上移動嗎?

xAbs = abs(*xEnemy - *x);
yAbs = abs(*yEnemy - *y);

   if (xAbs < yAbs)
   {
      // Move in the x direction since we're closer there
      if(*xEnemy < *x){
          *xEnemy += 3;
      } else if(*xEnemy > *x){
          *xEnemy -= 3;
      }
   }
   else
   {
      // Move in the y direction
      if(*yEnemy < *y){
          *yEnemy += 3;
      } else if (*yEnemy > *y){
          *yEnemy -= 3;
      }
   }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM