2

Sparrow のビルトイン ゲーム ループ機能を iOS 開発に使用する方法の完全な例を見つけようと、過去 2 日間、Web を精査してきました。私は、学校のプロジェクトでタワー ディフェンス タイプのゲームに取り組んでいます。プレイヤーは画面中央の砲塔を操作し、戦車は 4 つの側面すべてからランダムに画面に入ります。スクリーンショットへのリンクは次のとおりです。

https://www.dropbox.com/s/sqleuqza9dcgiqs/iOS%20Simulator%20Screen%20shot%20Apr%2019%2C%202013%2010.53.54%20PM.png

「タンク」クラスのインスタンスを作成して処理する「TankManager」クラスがあり、Tank のインスタンスをNSMutableArray呼び出された「activeTanks」に格納し、「tankImage」を「tankManagerSprite」にネストされた「tankSprite」に配置します。メインの「_contents」スプライトにネストされています。上のリンクの画像でわかるように、それらは問題なく表示されます。

戦車をアニメートしたい。私の読書から、1秒ごとにメソッドを呼び出すゲームループが必要であることを理解しています。Sparrow wiki ( http://wiki.sparrow-framework.org/manual/animation ) によると、Sparrow の組み込みのゲーム ループ機能を使用するには、次のようにします。

このコードを使用したいクラスの init 関数に追加します (クラスはSPEvent:)である必要があります

// e.g. in the init-method
[self addEventListener:@selector(onEnterFrame:) atObject:self forType:SP_EVENT_TYPE_ENTER_FRAME];

次に、このコードをどこかに配置します (TankManager.m ファイルに配置することにしましたが、それが正しいかどうかはわかりません)。

- (void)onEnterFrame:(SPEnterFrameEvent *)event
{
    for (Tank *thisTank in activeTanks)
    {
        [thisTank move:event.passedTime];
    }
}

そして、-(void)move:(double)timeElapsed;私の「タンク」クラスの「」関数で:

-(void)move:(double)timeElapsed{
    NSLog(@"xCoord: %f", tankVector.vertex.xCoord);
    NSLog(@"yCoord: %f", tankVector.vertex.xCoord);
    tankVector.vertex.xCoord += (timeElapsed *20);
    tankVector.vertex.yCoord += (timeElapsed *20);
}

その結果NSLog()、次のような出力が得られます (1 つのタンクのみが生成されます)。

2013-04-20 00:35:43.449 Tank Turret Game[7815:c07] xCoord: 172.677765
2013-04-20 00:35:43.450 Tank Turret Game[7815:c07] yCoord: 172.677765
2013-04-20 00:35:43.482 Tank Turret Game[7815:c07] xCoord: 173.343170
2013-04-20 00:35:43.483 Tank Turret Game[7815:c07] yCoord: 173.343170
2013-04-20 00:35:43.516 Tank Turret Game[7815:c07] xCoord: 174.010696
2013-04-20 00:35:43.516 Tank Turret Game[7815:c07] yCoord: 174.010696
2013-04-20 00:35:43.549 Tank Turret Game[7815:c07] xCoord: 174.679245
2013-04-20 00:35:43.550 Tank Turret Game[7815:c07] yCoord: 174.679245
2013-04-20 00:35:43.583 Tank Turret Game[7815:c07] xCoord: 175.349762
2013-04-20 00:35:43.584 Tank Turret Game[7815:c07] yCoord: 175.349762
2013-04-20 00:35:43.616 Tank Turret Game[7815:c07] xCoord: 176.020950
2013-04-20 00:35:43.616 Tank Turret Game[7815:c07] yCoord: 176.020950
2013-04-20 00:35:43.649 Tank Turret Game[7815:c07] xCoord: 176.679245
2013-04-20 00:35:43.650 Tank Turret Game[7815:c07] yCoord: 176.679245

ここまでは順調ですね。でも画面を見ても何も動かない。私は機知に富んでいます。これに対する解決策はおそらく非常に簡単であることはわかっていますが、私の人生ではそれを見つけることができません。どんな助けでも大歓迎です。

4

0 に答える 0