此代碼用於加速度計 方法中。以下代碼中發生了什麼?
它使用一個名爲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
變量是一個CGPoint,所以我把它想象成一個X,Y圖表。 我假設無論playerVelocity
變量在哪裏休息(比如說150,0),它首先將任何座標乘以0.4,無論何時收到加速度計輸入(這是由iPhone傾斜),然後加上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
是如何移動的。
我明白了。 所以,這個動作基本上發生在我的另一種方法(這是一種更新方法),它將速度添加到位置。我明白,謝謝。 – 2012-03-31 00:33:59