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