您好我正在开发一种游戏,其中对象必须在随机位置的屏幕上移动。我正在使用cocos2dx框架。我的代码是
CCSize winSize = CCDirector::sharedDirector()->getWinSize();
int minY = HelloWorld::bird->getContentSize().height/2;
int maxY = winSize.height - HelloWorld::bird->getContentSize().height/2;
int minX = HelloWorld::bird->getContentSize().width/2;
int maxX = winSize.width - HelloWorld::bird->getContentSize().width/2;
int range = maxX - minX;
int actualY = (rand() % range) + minY;
int actualX = (rand() % range) + minX;
//HelloWorld::bird->setPosition(ccp(actualX, actualY));
CCActionInterval* actionTo = CCMoveTo::actionWithDuration(3, ccp(actualX,actualY));
HelloWorld::runAction(actionTo);
它正在工作但只生成正数。所以精灵正在走出屏幕。我搜索了教程,但没有得到。
答案 0 :(得分:8)
CCRANDOM_MINUS1_1() * 10.0f
如果您使用的是cocos2d-x
我的回答永远不会被接受,即使它最适合提问者。
答案 1 :(得分:0)
试试这个:
int min = -10;
int max = 10;
Random r = new Random();
int i1 = r.nextInt(max - min + 1) + min;
请注意,nextInt(int max)返回介于0和0之间的int。从+1。
答案 2 :(得分:0)
使用random(T min, T max)
int randomNo = random(-10, 10);
它会产生-10和10范围内的随机数。
答案 3 :(得分:-1)
使用
int result = r.nextInt(max - min) + min;
instead of
int result = r.nextInt(max) + min;
因为nextInt取的是随机数的范围,而不是实际的上限。
答案 4 :(得分:-1)
boolean cof1=rand.nextBoolean();
if (!cof1)
result =-result ;