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