Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何将精灵从屏幕的右侧直接移动到左侧?_Objective C_Sprite - Fatal编程技术网

Objective c 如何将精灵从屏幕的右侧直接移动到左侧?

Objective c 如何将精灵从屏幕的右侧直接移动到左侧?,objective-c,sprite,Objective C,Sprite,我的外星人在屏幕底部沿X轴随机生成。它们沿对角线方向移动到屏幕的左上角 我想让它们沿着Y轴从屏幕右侧随机出现,然后从右向左直线移动 我如何修改下面的代码来做到这一点?我是这里的新手。。。如果可以,请提供帮助: if (curTime > _nextAlienSpawn) { float randSecs = [self randomValueBetween:0 andValue:13]; _nextAlienSpawn = randSecs + curTime;

我的外星人在屏幕底部沿X轴随机生成。它们沿对角线方向移动到屏幕的左上角

我想让它们沿着Y轴从屏幕右侧随机出现,然后从右向左直线移动

我如何修改下面的代码来做到这一点?我是这里的新手。。。如果可以,请提供帮助:

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将被交换!!!以下是相关链接: