Этот код используется в методе акселерометра.
Используется переменная CGPoint, называемая playerVelocity.
-(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, постепенно уменьшается координата X переменной playerVelocity, то есть 150,0, 145,0, 130,0 и т. Д...?
Если я пойму это, то узнаю, как движется мой playerObject
.