Objective c 如何将精灵从屏幕的右侧直接移动到左侧?
我的外星人在屏幕底部沿X轴随机生成。它们沿对角线方向移动到屏幕的左上角 我想让它们沿着Y轴从屏幕右侧随机出现,然后从右向左直线移动 我如何修改下面的代码来做到这一点?我是这里的新手。。。如果可以,请提供帮助:Objective c 如何将精灵从屏幕的右侧直接移动到左侧?,objective-c,sprite,Objective C,Sprite,我的外星人在屏幕底部沿X轴随机生成。它们沿对角线方向移动到屏幕的左上角 我想让它们沿着Y轴从屏幕右侧随机出现,然后从右向左直线移动 我如何修改下面的代码来做到这一点?我是这里的新手。。。如果可以,请提供帮助: if (curTime > _nextAlienSpawn) { float randSecs = [self randomValueBetween:0 andValue:13]; _nextAlienSpawn = randSecs + curTime;
if (curTime > _nextAlienSpawn)
{
float randSecs = [self randomValueBetween:0 andValue:13];
_nextAlienSpawn = randSecs + curTime;
float randY = [self randomValueBetween:0 andValue:winSize.height];
float randDuration = [self randomValueBetween:30 andValue:60];
alien = [_aliens objectAtIndex:_nextAlien];
_nextAlien++;
if (_nextAlien >= _aliens.count) _nextAlien = 0;
[alien stopAllActions];
alien.position = ccp(winSize.width+alien.contentSize.width, randY);
alien.visible = YES;
[alien runAction:[CCSequence actions:
[CCMoveBy actionWithDuration:randDuration position:ccp(- winSize.width-alien.contentSize.width, -500)],
[CCCallFuncN actionWithTarget:self selector:@selector(setInvisible:)],
nil]];
}
您的问题是,您的应用程序正在以横向模式运行,但您仍在使用窗口坐标,始终指纵向坐标。解决您遇到的问题
根据这个答案,听起来您需要创建一个新的子视图,并允许该视图正确旋转,以便X和Y相对于视图,而不是相对于窗口。然后,你的代码应该像上面那样工作 看起来我通过编辑以下行取得了一些进展:
alien.position=ccp(winSize.width+alien.contentSize.width,randY)代码>我用减法代替了加法,我的外星人在屏幕上的生成量似乎比以前高了一点。你的倒数第二行应该是ccp(-winSize.width-alien.contentSize.width,-500)
而不是winSize.height
?@NHDaly我相信你说得对。我仍然无法编辑Y值以使外星人在屏幕上显示得更高。有趣的是,它们继续从屏幕底部生成大约30个像素,并一直到左上角。所以,我想,如果它们只是从屏幕底部往北添加一根头发,那么必须有一种方法来改变值,使它们从更高的位置开始。噢!我想知道:你的游戏是在横向模式吗?如果是这样的话,您是否创建了一个新视图,或者您正在窗口坐标中工作?因为窗口坐标始终是纵向的,所以如果您在横向中,x和y将被交换!!!以下是相关链接: