私は方向パッドと2つのボタンを備えたゲームパッドを持っています。それらはすべてデジタル(アナログではない)です。Cocos2d。火災(弾丸)の迅速性(速度)を低下させるか?
私は彼らのイベントを処理するための手順があります。
-(void)gamepadTick:(float)delta
{
...
if ([gamepad.B active]) {
[ship shoot];
}
...
}
をそして、私はコマンドを使用してそれを呼び出す:
[self schedule:@selector(gamepadTick:) interval:1.0/60];
[船の撮影は]武器クラスからシュート関数を呼び出します。
-(void)shoot
{
Bullet *bullet = [Bullet bulletWithTexture:bulletTexture];
Ship *ship = [Ship sharedShip];
bullet.position = [ship getWeaponPosition];
[[[CCDirector sharedDirector] runningScene] addChild:bullet];
CGSize winSize = [[CCDirector sharedDirector] winSize];
int realX = ship.position.x;
int realY = winSize.height + bullet.contentSize.height/2;
CGPoint realDest = ccp(realX, realY);
int offRealX = realX - bullet.position.x;
int offRealY = realY - bullet.position.y;
float length = sqrtf((offRealX*offRealX) + (offRealY*offRealY));
float velocity = 480/1; // 480pixels/1sec
float realMoveDuration = length/velocity;
[bullet runAction:[CCSequence actions:[CCMoveTo actionWithDuration:realMoveDuration position:realDest],
[CCCallFuncN actionWithTarget:self selector:@selector(bulletMoveFinished:)], nil]];
}
-(void)bulletMoveFinished:(id)sender
{
CCSprite *sprite = (CCSprite *)sender;
[[[CCDirector sharedDirector] runningScene] removeChild:sprite cleanup:YES];
}
問題は、武器が弾丸をあまりにも多く発射することです。ボタンや方向パッドごとに別々のタイマーや機能を使用せずに、その量を減らすことは可能ですか?
+1が、私は同じことの具体的な例を発見した:
武器クラスはnextShotTime変数と次のような方法が含まれています。誰もがそれを投稿しようとしないなら – Gargo