2016-01-28 3 views
0

Я пытаюсь сделать игру, в которой игрок контролирует левое и правое движение мяча (like rolling sky). Мяч должен двигаться вперед все время с постоянной скоростью. До сих пор я пробовал следующее, но я могу контролировать мяч влево и вправо, когда он находится в воздухе (прыгает).Держите постоянную скорость в одном направлении

Любая помощь или ссылки были бы очень оценены.

float forwardVelocity = 20.0f 

void Update() 
{ 
    if (gameConfig.currentGameState == GameConfig.CurrentGameState.LevelInPlay) 
    { 
     handleMovement(); 
     handleJumping(); 
     deathDetection(); 
    } 
} 
void handleJumping() 
{ 
    if ((Input.GetMouseButtonDown(0) || Input.GetButtonDown("Jump")) && isGrounded) 
    { 
     rigidBody.velocity = new Vector3(rigidBody.velocity.x, jumpHeight, rigidBody.velocity.z); 
     jumpSound.Play(); 
    } 
} 
void handleMovement() 
{ 
    var moveHorizontal = Input.GetAxis ("Horizontal"); 
    Vector3 movement = new Vector3 (moveHorizontal, 0.0f, 0.0f); 
    rigidBody.AddForce (movement * rotationSpeed); 
    if (rigidBody.velocity.z < forwardVelocity) 
    { 
     rigidBody.velocity = new Vector3(rigidBody.velocity.x, rigidBody.velocity.y, forwardVelocity); 
    } 
} 
+0

Я думаю, что это означает, что вы добавляете силу, а затем переопределяете ее перед обновлением скорости. –

+0

Хороший улов. Я попытаюсь переместить их и посмотреть, поможет ли это. благодаря – Harg

ответ

0

Я закончил это с использованием метода FixedUpdate, который работает хорошо.

void handleMovement() 
{ 
    moveHorizontal = Input.GetAxis ("Horizontal"); 
    float moveVertical = 1.0f 

    Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical); 
    rigidBody.AddForce (movement * rotationSpeed); 
} 
Смежные вопросы