2012-03-31 19 views
1

このコードは、加速度計 メソッドで使用されます。次のコードで何が起こっていますか?

これは、playerVelocityというCGPoint変数を使用します。

-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration 
{ 
    //controls how quickly the velocity decelerates 
    float deceleration = 0.4f; 

    //determines how sensitive the accelerometer reacts 
    float sensitivity = 6.0f; 

    //how fast the velocity can be at most 
    float maxVelocity = 100; 

    playerVelocity.x = playerVelocity.x *deceleration + acceleration.x *sensitivity; 


    if (playerVelocity.x < -maxVelocity) 
    { 
     playerVelocity.x = -maxVelocity; 
    } 
    else if (playerVelocity.x > maxVelocity) 
    { 
     playerVelocity.x = maxVelocity; 
    } 
} 

今私はplayerVelocity変数はので、私はX、Yグラフとしてそれを想像するCGPointであることを知っています。 playerVelocity変数がどこにあっても(150.0としましょう)、加速度計の入力が受信されたとき(iPhoneが傾いているとき)に0.4で任意の座標を乗算してから、それを乗算するとaccelerometer.x 6.0〜playerVelocity変数。これは正しいです?私はおよそ混乱している何

CGPoint pos = playerObject.position; 
pos.x+= playerVelocity.x; 
playerObject.position = pos; 

経由

後で別の方法では、これは私の他のオブジェクトの位置に追加されますが、ここで舞台裏で起こっている正確に何です。上記の私の仮定は正しいですか?

playerVelocityが150,0で0.4を掛けた場合、playerVelocity変数のX座標は徐々に小さくなります(150,0,145,0,130,0など)。

私がこれを理解すると、私はplayerObjectがどのように動いているのかを知るでしょう。

答えて

1

加速度計で受信した加速度から減速して現在進行中のどの方向の動きにも一定の減速度(.4)があり、定数が乗算されているようです。この値は現在の速度に加算されます。したがって、本質的には、(加速度計 - 一定の減速からの加速度)の差を現在の速度に各計算に追加しています。

+0

です。 動きは基本的に私の他の方法(更新方法)で速度を位置に加えます.Ok、ありがとう、ありがとう。 –

関連する問題