私は iOS と cocos2d にかなり慣れていないので、コードで実行したいことを作成しようとすると問題が発生します。最初に概要を説明してから、私が持っているものを示します。
これまでに得たのは真ん中の巨大なスプライトで、これに触れると、2000 の別のスプライトが中央の位置から生成され、パーティクル システムのように全方向に発射されます。
まず、速度コード (Objective-c で記述) を Cocos2d に実装するコーディングを試みましたが、うまくいきませんでした。-コード-
-(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 を追加してみましたが、これは私が望んでいたことを行いましたが、生成された個々のスプライトにタッチ機能を追加したいのですが、それらは消えていく傾向があります。
繰り返しますが、私はまだこれにかなり慣れていないので、誰かが何かアドバイスをくれるとしたら、それは素晴らしいことです.
患者様、お読みいただきありがとうございます。