【问题标题】:Spawning Enemy at a Random Location [closed]在随机位置生成敌人[关闭]
【发布时间】:2011-10-26 23:54:09
【问题描述】:

我一直在关注 Ray Wenderlich 的教程 (http://codeviewer.org/view/code:1d8b) 中的这段代码 sn-p。我正在尝试做几乎相同的事情,除了我使用的是精灵表(batchnode),并且我希望目标/敌人从屏幕的右侧(在任何高度)产生,然后移动到左侧(在同一高度)。这是我的代码。 (http://codeviewer.org/view/code:1d8c)。

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

【问题讨论】:

标签: iphone random cocos2d-iphone sprite spawning


【解决方案1】:

参见this tutorial 创建从随机点开始向目标移动的敌人。它位于页面下方。

编辑:

要创建一个随机的 Y 生成点,请执行以下操作:(假设您使用的是 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);
}

然后只需将“痣”的位置设置为该点即可。

【讨论】:

  • 这与我学习 sn-p 的教程完全相同,这不是我的问题。我知道我想如何/在哪里移动敌人,但原来的产卵位置给我带来了麻烦。
  • 当我这样做时,敌人会在左下角(错误的位置)生成,然后离开屏幕左侧。当一个新的产生时,一个敌人在屏幕左侧的不同/随机位置闪烁(我想要什么,除了它只在那里闪烁一秒钟,我希望它在右侧屏幕)。你能看看这个文件吗?这是我的.m。谢谢4shared.com/file/zY8LSBiW/Mole.html 代码在addMole 方法中。
【解决方案2】:

如果你想将你的鼹鼠精灵放在右侧的随机位置,你应该可以这样做:

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

这会将鼹鼠设置在最右边,沿 y 轴的随机点。 然后,您可以使用 CCMoveBy 代替使用 CCMoveTo 的 actionMove,将位置设置为 ccp(-winSize.width, 0)。

如果这不是您想要的,也许您应该重新考虑如何提出您的问题。

【讨论】:

  • 感谢您的帮助。我稍微修改了代码(codeviewer.org/view/code:1d91)。当我跑步时,我让敌人在我想要的位置闪烁,但随后又将位置切换到屏幕底部。我的代码有问题吗?请检查,谢谢。
  • 我注意到你在第 6 行设置了鼹鼠的位置,但是直到 19 行你才真正创建了鼹鼠对象,不知道我以前怎么没注意到。在创建 CCSprite 之前,您不应该引用鼹鼠对象。
  • 非常感谢!你不知道你帮了我多少=D
猜你喜欢
  • 2020-12-30
  • 1970-01-01
  • 2019-08-22
  • 1970-01-01
  • 1970-01-01
  • 2016-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多