我爲我的大學任務創建一個太空入侵者遊戲。我在紙上打破了部分,我認爲開始的好地方是將精靈移動到屏幕上。我目前所面對的問題是這樣的,當精靈他的畫面,將只是進行移動的右手邊,所以我加了這段代碼:當擊中屏幕一側時的逆向動畫方向
if (invadersSprite.getPosition().x > 650)
{
std::cout << "WIDTH_END" << std::endl;
}
我基本上用它進行調試以備將來參考。輸出彈出到控制檯,所以我知道我正在做些什麼。所以,我開始從輸出移動到實際移動的精靈回到屏幕的左側。我現在有更多的問題,然後預期。
爲了便於閱讀代碼,我聲明瞭一些用於向上,向左,向右和向下的整數。
int spriteWalkSpeed = 50;
int up=-spriteWalkSpeed, down=spriteWalkSpeed, left=-spriteWalkSpeed, right=spriteWalkSpeed;
我試過使用SFML移動命令和setPosition,但沒有一個真正的工作,因爲我認爲他們應該。
招:
我曾與這一個問題是,它基本上停在屏幕的中間。它仍然可以動畫腿部動作等,但它不會左右移動。
if (invadersSprite.getPosition().x > 650)
{
invadersSprite.move(left, 00);
}
setPosition兩種:
這是一個有點接近我所後,卻依然沒有雪茄。該動作暫停大約一秒鐘,然後彈出到屏幕的左側。我需要的是退回屏幕。
if (invadersSprite.getPosition().x > 650)
{
invadersSprite.setPosition(left, 00);
}
我還沒有被使用SFML很長時間,所以我這個有點困惑。
編輯
在精靈被移動到屏幕右側的時刻,需要:
if(spriteTimer>delay)
{
invadersSprite.setTextureRect(area);
++count;
invadersSprite.move(right,0);
if(count==SPRITECOLS) //WE HAVE MOVED OFF THE RIGHT OF THE IMAGE
{
area.left=0; //reset texture rect at left
count=0; //reset count
}
else
{
area.left+=spaceWidth; //move texture rect right
}
spriteTimer=0; //we have made one move in the sprite tile - start timing for the next move
}
我會創建'左,右'等作爲SFML向量而不是整數。 – 2013-03-05 15:18:17
謝謝您的輸入。我會對此進行一些研究,因爲我之前沒有使用過載體。 – 2013-03-05 15:21:56
'getPosition()。x' < - 'getPosition'返回一個向量('sf :: Vector2'?),並且您正在訪問它的'x'組件 – 2013-03-05 15:23:03