[英]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.