Я написал следующий код (приведенный ниже) -
using UnityEngine;
using System.Collections;
public class NewBehaviourScript : MonoBehaviour {
void Update () {
if (Input.GetKeyDown(KeyCode.RightArrow))
transform.position += Vector3.right;
}
}
Согласно коду, спрайт должен двигаться вправо, когда нажата стрелка вправо. Но спрайт не двигается. Так что же не так в коде?
Примечание. Я использую Unity версии 5.4.
Пожалуйста, используйте правильные теги. unityscript — это или лучше был вариант языка JavaScript, похожий на язык, который использовался в предыдущих версиях Unity, и к настоящему времени он уже давно устарел. Ваш код явно c#. Также ваш вопрос совершенно не ясен. Пожалуйста, объясните, что именно вы ожидаете и что происходит вместо этого. В общем: если ваш код не делает то, что должен, то крайне сомнительно, что он написан правильно ;)





Согласно документации, удерживать клавишу нажатой нельзя, приходится нажимать ее снова и снова.
Затем, как упомянул Эвертс, вы всегда должны включать Time.deltaTime в свои расчеты, чтобы избежать проблем, когда ваше приложение по какой-либо причине отстает.
Итак, вам нужно два шага:
transform.position += Vector3.right * Time.deltaTime * speed; и попытайтесь выяснить, насколько большой может быть скорость. Это может быть любое значение от: 0,1, 0,01, 0,001 до 1, 10, 100 и т. д., в зависимости от того, что вам подходит. Но эта формула предотвратит многие проблемы в будущем.
Вы используете клавишу вниз, и она перемещается на 1. Попробуйте с Input.GetKey и transform.position += Vector3.right * Time.deltaTime * speed; Не забудьте создать и указать значение скорости, отличное от 0.