スプライトを x 軸上のタッチ ポイントに移動して、velocity.x を増加させるにはどうすればよいですか。タッチが長ければ長いほど速度が速くなり、タッチポイントの特定の範囲に入るか、ユーザーが指を離すと、再び速度が低下しますか?
update メソッドで更新される速度値を持つプレーヤー クラスのセットアップがありますが、タッチ メソッドで必要な動作を取得する方法がわかりません。
乾杯、
ルイス
スプライトを x 軸上のタッチ ポイントに移動して、velocity.x を増加させるにはどうすればよいですか。タッチが長ければ長いほど速度が速くなり、タッチポイントの特定の範囲に入るか、ユーザーが指を離すと、再び速度が低下しますか?
update メソッドで更新される速度値を持つプレーヤー クラスのセットアップがありますが、タッチ メソッドで必要な動作を取得する方法がわかりません。
乾杯、
ルイス
これで大まかな準備が整うはずです(インスタンス変数とそれをタッチ可能に追加することはinitにあり、そのスニペットも必要かどうかを知っておいてください):
- (BOOL) ccTouchBegan: (UITouch *) touch
withEvent: (UIEvent *) event
{
_touchBeganAt = [self convertTouchToNodeSpace:touch];
_velocityChangeSpeed = 1;
}
- (void) ccTouchEnded: (UITouch *) touch
withEvent: (UIEvent *) event
{
_velocityChangeSpeed = -1;
}
- (void) update:(ccTime)delta
{
velocityThreshold = 1; //? You can tune this
distanceThreshold = 1; //? Same
_sprite.velocity += _velocityChangeSpeed;
//So it comes to a complete stop, as opposed to moving backwards
if(_sprite.velocity < velocityThreshold)
_velocityChangeSpeed = 0;
float distanceFromTouchedPoint = ABS(_sprite.position.x - _touchBeganAt.x);
if(distanceFromTouchedPoint < distanceThreshold)
_velocity = 0;
}