2011-08-14 155 views
1

我一直在关注Ray Wenderlich教程中的这段代码(http://codeviewer.org/view/code:1d8b)。我试图做几乎相同的事情,除了我使用spritesheet(batchnode),并且我想让目标/敌人从屏幕右侧产生(在任何高度),并移动到左侧(在相同的高度)。这是我的代码。 (http://codeviewer.org/view/code:1d8c)。随机产生敌人

额外信息 - “痣”是我的目标/敌人。在前几行旁边注释掉代码(//)就是我的笔记。 编辑 - 看看我对mjvotaw的回答的评论。

+0

什么问题? – jtbandes

+0

没有错误或崩溃,但敌人从左下角产生,然后转到ccp:(100,100)。他们从错误的地方产卵。而且,他们都在那个角落的同一个地方产卵。它不是随机的。 – Joethemonkey101

+0

我投票结束这个问题,因为[codeviewer.org链接不再工作](https://meta.stackoverflow.com/questions/345443/what-should-happen-to-questions-using-codeviewer- ORG-的共享代码)。没有这些链接,问题就没有明确的[最小,完整和可验证的例子](https://stackoverflow.com/help/mcve)。 – g00glen00b

回答

-1

如果您想将您的摩尔精灵沿着右侧的任意点,你应该能够只是做:

[mole setPosition: ccp(winSize.width - [mole contentSize].width, arc4random() % winSize.height)]; 

那台痣最右侧边缘,在随机点沿着y轴。 然后,您可以使用CCMoveBy,而不是使用CCMoveTo的actionMove,将位置设置为ccp(-winSize.width,0)。

如果这不是你正在寻找的,或许你应该重新思考如何提出你的问题。

+0

感谢您的帮助。我稍微改了一下代码(http://codeviewer.org/view/code:1d91)。当我跑步时,我让敌人在我想要的位置闪烁,但随后又将位置切换到屏幕底部。我的代码有问题吗?请检查,谢谢。 – Joethemonkey101

+0

我注意到你在第6行设置了鼹鼠的位置,但是直到19岁才真正创建痣对象,不知道我以前怎么没有捕捉到它。在创建CCSprite之前,不应该引用mole对象。 – mjvotaw

+0

非常感谢!你不知道你帮了我多少钱= D – Joethemonkey101

-1

请参阅this tutorial关于创建从随机点开始移向目标的敌人。这是页面上的一些小方法。

编辑:

创建随机Ÿ重生点,做到以下几点:(假设你使用了cocos2d)

// Define these at the top of the .m file 
#define ARC4RANDOM_MAX 0x100000000 
#define RAND_FLOAT ((float)arc4random()/ARC4RANDOM_MAX) 

- (CGPoint)pointWithRandomYAtX:(float)locationX 
{ 
    CGSize size = [[CCDirector sharedDirector] winSize]; 
    return CGPointMake(locationX, RAND_FLOAT * size.height); 
} 

然后简单的“鼹鼠”的位置设置为点。

+0

这是我从片段中截取的完全相同的教程,这不是我的问题。我知道我想如何/在哪里移动敌人,但原来的产卵地点给我带来麻烦。 – Joethemonkey101

+0

查看上面的修改 –

+0

当我这样做时,敌人在左下角产生(错误的地方),然后离开屏幕向左。当一个新生物产生时,一个敌人在屏幕左侧的不同/随机位置闪烁(我想要的,除了它只在那里瞬间闪烁,并且我希望它位于屏幕的右侧屏幕)。你可以看看这个文件吗?这是我的.m。谢谢 http://www.4shared.com/file/zY8LSBiW/Mole.html 代码位于addMole方法中。 – Joethemonkey101