簡體   English   中英

在cocos2d-x的游戲場景中隨機移動障礙物

[英]move obstacles randomly in game scene in cocos2d-x

我正在使用cocos2d-x(c ++)游戲引擎在Xcode中創建一個游戲,而我是這個初學者,在這個游戲場景中,我嘗試隨機移動障礙物,但是障礙物是按順序移動的,任何人都請我的解決方案。 以下是我用來移動障礙物的代碼

obs1 = CCSprite::create("branch.png");
int val=arc4random%7;
obs1->setPosition(ccp(winwsize/val,winhsize/8));
this->addChild(obs1 ,-1);
obs1->setVisible(true);

schedule(schedule_selector(SceneThree::OnUpdateFrame));


void GameScene::OnUpdateFrame3(float deltaTime3)
{ 
if (obs1->getPosition().x < -(winwsize/2))
{
    obs1->setPosition(ccp(obs1->getPosition().x+(2*winwsize),obs1->getPosition().y));
}
 obs1->setPosition(ccp(obs1->getPosition().x-17,obs1->getPosition().y));

}

首先,您僅對初始位置使用隨機值。 並且在每個刻度上(即更新功能),您只需從x位置減去17,這應該導致順序移動。

同樣,隨機數的生成方式將給出0-6的值。 因此,您將獲得諸如“ winWsize /(0到6之間的數字)”之類的值,該值可能會被零除。或者,否則值將受到IMO的限制(與整個屏幕相比)

為什么不將其設置為arc4random()%winWSize之類的東西(這將給UA值0-winWSize)?

另外,請確保在“ OnUpdateFrame3”函數中使用此(arc4random()%winWSize),以便在每個刻度上都獲得一個新的隨機位置,請嘗試

void GameScene::OnUpdateFrame3(float deltaTime3)
{ 

 float xValue = arc4random() % winWSize;
 obs1->setPosition(ccp(xValue,obs1->getPosition().y));

}

但這只是沿X軸移動,您也可以對Y軸使用類似的技術。 另外,arc4random可能無法在Android上運行,因此您也應該檢查一下,

http://blog.kibotu.net/android/c-arc4random-on-android-windows-and-linux

或者,您也可以使用“時間戳記”自行生成一個隨機值。 選擇你的。

暫無
暫無

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

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