我对 iOS 和 cocos2d 很陌生,我在尝试创建我想要代码做的事情时遇到了问题。让我先给你一个纲要,然后我会展示我所拥有的。
到目前为止,我得到的是中间的一个巨大精灵,当它被触摸时,我想说从中心位置生成 2000 个不同的精灵,就像一个粒子系统一样,向各个方向射击。
首先,我尝试在 Cocos2d 上实现速度代码(用 Objective-c 编写),但没有成功。-代码-
-(void)ccTouchBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
if(CGRectContainsPoint([[self getChildByTag:1] boundingBox], location))
{
for( int i = 0; i < 100; i++)
{
CCSprite *ballGuySprite = [CCSprite spriteWithFile:@"ball.png"];
[self addChild:ballGuySprite z:7];
ballGuySprite.position = ccp(((s.width + i *10) /2), (s.height + i *10) /2);
}
}
}
这样做是当我触摸第一个精灵时,其他 100 个精灵相互重叠,通向右上角。
我使用的速度代码如下所示,当我尝试将其应用于精灵时,没有任何反应。- 速度代码 -
-(void) checkCollisionWithScreenEdges
{
if(ballGuysRect.origin.x <= 0)
{
ballVelocity.x = abs(ballVelocity.x);
}
if(ballGuysRect.origin.x >= VIEW_WIDTH - GUY_SIZE)
{
ballVelocity.x = -1 * abs(ballVelocity.x);
}
if(ballGuysRect.origin.y <= 0)
{
ballVelocity.y = abs(ballVelocity.y);
}
if(ballGuysRect.origin.y >= VIEW_HEIGHT - GUY_SIZE)
{
ballVelocity.y = -1 * abs(ballVelocity.y);
}
}
-(void) updateModelWithTime:(CFTimeInterval)timestamp
{
if(lastTime == 0.0)
{
lastTime = timestamp;
}
else
{
timeDelta = timestamp - lastTime;
lastTime = timestamp;
ballGuysRect.origin.x += ballVelocity.x * timeDelta;
ballGuysRect.origin.y += ballVelocity.y * timeDelta;
[self checkCollisionWithScreenEdges];
}
}
当我将该代码附加到精灵时,什么也没有发生。
我还尝试添加一个 CCParticleExplosion ,它确实做了我想要的,但我仍然想为每个生成的单独精灵添加一个触摸功能,它们往往会逐渐消失。
再说一次,我对此还是很陌生,如果有人能提供任何建议,那就太好了。
感谢您的患者和时间阅读本文。