Что происходит в следующем коде? - PullRequest
1 голос
/ 31 марта 2012

Этот код используется в методе акселерометра.

Используется переменная 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.

1 Ответ

1 голос
/ 31 марта 2012

Похоже, что у вас есть постоянное замедление (.4), которое противодействует движению в любом направлении, в котором вы в данный момент движетесь, вычитая из ускорения, полученного через акселерометр, который умножается на постоянную. Это значение затем добавляется к вашей текущей скорости. Таким образом, вы по существу добавляете разницу (ускорение от акселерометра - постоянное замедление) к текущей скорости для каждого вычисления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...