入ってくる障害物を避けて、ユーザーが画面上でスプライトを上下にドラッグすることになっているゲームを作ろうとしています。ここでの最後の答えは、画面上でスプライトをドラッグするのに役立ちましたが、スプライトを移動できる最大速度を設定したいので(できれば自然に見える加速/減速で)、簡単に移動することはできません。オブジェクトを避けてください。
これを達成するためにコードを変更する方法を誰かが知っていますか、それとも別の方法がありますか?
ありがとう :)
入ってくる障害物を避けて、ユーザーが画面上でスプライトを上下にドラッグすることになっているゲームを作ろうとしています。ここでの最後の答えは、画面上でスプライトをドラッグするのに役立ちましたが、スプライトを移動できる最大速度を設定したいので(できれば自然に見える加速/減速で)、簡単に移動することはできません。オブジェクトを避けてください。
これを達成するためにコードを変更する方法を誰かが知っていますか、それとも別の方法がありますか?
ありがとう :)
CGPoint destinationPosition
指の位置である変数を維持し、更新ループを使用してその位置を変更する必要があります。
-(void) update:(ccTime) dt
{
CGPoint currentPosition = draggableObject.position.x;
if (destination.x != currentPosition.x)
{
currentPosition.x += (destination.x - currentPosition.x) / 5.0f; // This 5.0f is how fast you want the object to move to it's destination
}
if (destination.y != currentPosition.y)
{
currentPosition.y += (destination.y - currentPosition.y) / 5.0f;
}
draggableObject.postion = currentPosition;
}
でif
、丸め誤差を考慮して、オブジェクトが完全に同じ数ではなく、互いに近いかどうかを確認することをお勧めします。
時間やタッチなど、使用しているスケジュールアップデーターにifステートメントを含める必要があります。
私はあなたがx/yの速度を持っていると思いますか?加速がどこにあっても、更新ステートメントのすぐ内側-
if(acceleration.x > 20){
acceleration.x = 20;
}
if(acceleration.y > 20){
acceleration.y = 20;
}