0

スプライト キット ゲームで、オブジェクトがスローされる「強さ」を表す視覚要素 (プログレス バーの一種) を作成しようとしています。そのため、画面に触れるとメーターが上昇し始めます。長すぎるとバーがリセットされ、ユーザーが画面から指を離すまで無期限にリセットされます。メーター強度の対応する位置が、オブジェクトが投げられる距離になります。私が知っている唯一の要素は、touchesBegan、touchesEnded を操作することです。助けてください-この問題に関するobjective-cとスプライトキットのオンラインで何も見つかりません(githubもチェックしてください)。

4

1 に答える 1

1

このようなことをする方法はたくさんあります。2つの重要なものが必要です。1) ユーザーが触れているかどうかを追跡するもの。2) ユーザーがタッチを継続している時間を追跡するもの。

ユーザーが実際に触れているかどうかを追跡するには、touchesBegan メソッドで true に設定する BOOL を使用できます。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    myBool = true;    
}

touchesEnded メソッドでは、タッチが終了したら BOOL を再度設定します。

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    myBool = false;

    // your throw the object code.
    // strength based on myInt.
    // do not forget to set the myInt back to 0.
}

2 番目の問題は、タッチ期間を追跡することです。それを行う方法はたくさんあります。それらの 1 つは update メソッドを使用することです。

-(void)update:(CFTimeInterval)currentTime {
    if(myBool) {
        myInt++;
        // code for modifying the running meter bar
        if(myInt > 600) {
            // max time reached. reset the meter bar
            myInt = 0;
        }
    }
}

例として60を使用しました。SK は 60 FPS のデフォルトで実行されることに注意してください。つまり、600 は 10 秒に相当します。

上記は非常に一般的なコードであり、何ができるかについての入門書として役立つはずです。たとえば、スロー機能以外の他のタッチには許容範囲がありません。画面全体ではなく、スロー ボタンを使用することをお勧めします。残りはあなたが理解することです。

于 2015-02-27T22:41:26.143 に答える