私は ios5 の cocos2d フレームワークに関する本を数日間読んでおり、その本で説明する小さなゲームを開発しました。このゲームでスプライトを制御するには、加速度計を使用します。
-(void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
{
float deceleration = 0.4f;
float sensitivity = 6.0f;
float maxVelocity = 100;
// adjust velocity based on current accelerometer acceleration
playerVelocity.x = playerVelocity.x * deceleration + acceleration.x * sensitivity;
// we must limit the maximum velocity of the player sprite, in both directions (positive & negative values)
if (playerVelocity.x > maxVelocity)
{
playerVelocity.x = maxVelocity;
}
else if (playerVelocity.x < -maxVelocity)
{
playerVelocity.x = -maxVelocity;
}
// Alternatively, the above if/else if block can be rewritten using fminf and fmaxf more neatly like so:
// playerVelocity.x = fmaxf(fminf(playerVelocity.x, maxVelocity), -maxVelocity);
}
このコードを変更して、スプライトが x 軸に沿って加速/減速できるようにすることはできますが、加速度計ではなくタッチ入力を使用し、タッチが長く押されているほど速くなるようにするにはどうすればよいでしょうか? したがって、右にタッチすると、スプライトはゆっくりとその場所に移動し、タッチを放すと、その場所への移動が停止します。タッチを長押しするほど、スプライトの動きが速くなります。
フレームワークには、スプライトがタッチされた位置に回転できるようにする回転メカニズムを実装できるものがあるので、タッチされたポイントに面しているように見えますか?