Я пытаюсь заставить свой спрайт время от времени перемещаться на единицу. Он работает до тех пор, пока несколько клавиш не будут удерживаться одновременно. В этом случае он движется в одном направлении, в зависимости от того, какое направление запрограммировано первым в коде. Мне кажется, что мой спрайт должен двигаться в обоих направлениях, поскольку операторы if не являются операторами if else. Если я иду вверх и влево, он ДОЛЖЕН двигаться на 1 единицу вверх и на 1 единицу влево. Как я могу заставить его это сделать?
public Transform timmyTransform;
private float timer= 0;
public float movementDelay;
void Update()
{
timer += Time.deltaTime;
if (Input.GetAxis("Vertical") < 0 && timer > movementDelay)
{
timer = 0;
timmyTransform.transform.position += new Vector3(0, -1, 0);
}
if (Input.GetAxis("Vertical") > 0 && timer > movementDelay)
{
timer = 0;
timmyTransform.transform.position += new Vector3(0, 1, 0);
}
if (Input.GetAxis("Horizontal") < 0 && timer>movementDelay)
{
timer = 0;
timmyTransform.transform.position += new Vector3(-1, 0, 0);
}
if(Input.GetAxis("Horizontal") > 0 && timer > movementDelay)
{
timer = 0;
timmyTransform.transform.position += new Vector3(1, 0, 0);
}
Хм, вы, кажется, установили
timer = 0
, поэтому последующая проверка дляtimer > movementDelay
вернет false и пропустит остальные направления. (Я думаю,movementDelay
никогда не будет отрицательным...)Добавляя к комментарию @Alphaharrius, вы, вероятно, хотите
bool moved
, установите для него значение true, если вы нажмете один из этих блоков, а затем в конце обнулите таймер.