2016-08-08 13 views
0

Я использую следующий скрипт для управления мячом, но он не делает именно то, что я хочу. Наша 3D-игра будет воспроизводиться в ландшафтном режиме с помощью домашней кнопки (или нижней) устройства в правой руке. Наклонение (без поворота) устройство влево должно сделать бросок мяча влево, наклонение вправо должно заставить его свернуться вправо. Наклонение устройства вниз (сверху вниз устройства) должно ускорить шарик и наклонить устройство вверх, чтобы замедлить его. Я не хочу, чтобы мяч неограниченно ускорялся.Управление перемещением шара с помощью наклоняющего устройства в Unity3D

Код, приведенный ниже, требует, чтобы устройство держалось ровно, а не укладывалось на плоскость, и оно перемещает шар, поворачивая устройство, не набирая его.

 void FixedUpdate() 
    { 
     // Player movement in mobile devices 
     // Building of force vector 
     Vector3 movement = new Vector3(-Input.acceleration.x, 0.0f, -Input.acceleration.z); 
     // Adding force to rigidbody 
     var move = movement * speed * Time.deltaTime; 
     rigidbdy.AddForce(move);   
    } 
+2

Вы сказали, что хотите, но вы не сказали нам, как он действует неправильно. Измените свой вопрос и включите сведения о том, как ваша текущая реализация не работает. –

ответ

2

Для вашей проблемы наклонных вы, вероятно, просто нужно выбрать что-то другое, чем (-Input.acceleration.x, 0.0f, -Input.acceleration.z);, in the example in the documentation они (-Input.acceleration.y, 0.0f, Input.acceleration.x); делать наклон управления.

Для получения максимальной скорости просто добавьте чек на rigidbdy.velocity.magnitude > maxSpeed в свой код и запустите значение, если оно установлено.

public float maxSpeed; 
void FixedUpdate() 
{ 
    // Player movement in mobile devices 
    // Building of force vector 
    Vector3 movement = new Vector3(-Input.acceleration.y, 0.0f, Input.acceleration.x); 
    // Adding force to rigidbody 
    var move = movement * speed * Time.deltaTime; 
    rigidbdy.AddForce(move); 

    //Limits the max speed 
    if(rigidbdy.velocity.magnitude > maxSpeed) 
    { 
     rigidbdy.velocity = rigidbdy.velocity.normalized * maxSpeed; 
    } 
} 

Это приведет к тому, скорость будет ограничен к тому, что значение, которое вы установили для maxSpeed в инспекторе.

+0

Спасибо, отлично работает! – jbassking10

 Смежные вопросы

  • Нет связанных вопросов^_^