2016-06-14 12 views
0

Фон: Я делаю прорыв клона. У меня есть скрипт для весла, который успешно перемещает весло вдоль оси X с движением мыши.Использование Getaxis для перемещения объекта с помощью мыши и стрелок по оси x в C#/Unity3D?

Желание: я хочу иметь два входа для этой игры. один - мышь, другой - левая и правая клавиши со стрелками. Я пошел в Edit ----> Настройки проекта ---->, но я не уверен, как настроить Alt Negative, Alt положительные кнопки для выравнивания с мышью по оси x.

Я также хотел бы закрепить движение в зависимости от размера экрана моей игры. Я знаю, что должен использовать метод Mathfclamp, однако я не уверен, как сделать форматирование в правильном порядке в моем скрипте.

Вот код, который я использовал для GetAxis.

public class Paddle : MonoBehaviour { 


    public float speed; 


    void Update() 
    { 
     float x = Input.GetAxis("Mouse X")* Time.deltaTime*speed; 


     transform.Translate (x,0,0); 

    } 
} 
+0

Вы получили его на работу? – Programmer

ответ

0

Вы не можете использовать Input.GetAxis с помощью клавиш со стрелками, но есть уловка, о том, как это сделать. Сначала используйте Input.GetAxis, чтобы получить значение перемещения мыши и сохранить его в переменной x. Если значение x является более или меньше, чем затем переместить объект со значением от Input.GetAxis.

Если значение x является , проверьте, если нажата левая или правая стрелка, а затем сделать направление x быть Vector3.right*speed или Vector3.left.x * keySpeed в зависимости от того была нажата клавиша. Еще одна вещь, которую нужно знать, это то, что оба умножителя скорости должны быть разных значений. Для мыши должен быть множитель скорости, а другой - для клавиатуры, или объект исчезнет с экрана. Соответствующим значением для мыши является 100f, а для клавиатуры - 0.1f.

public class Paddle : MonoBehaviour 
{ 
    public float mouseSpeed = 100; 
    public float keySpeed = 0.1f; 


    void Update() 
    { 
     float x = 0; 
     x = Input.GetAxis("Mouse X") * Time.deltaTime * mouseSpeed; 

     if (x == 0) 
     { 
      if (Input.GetKey(KeyCode.LeftArrow)) 
      { 
       x = Vector3.left.x * keySpeed; 
      } 

      if (Input.GetKey(KeyCode.RightArrow)) 
      { 
       x = Vector3.right.x * keySpeed; 
      } 

     } 
     transform.Translate(x, 0, 0); 
    } 
} 
Смежные вопросы