Не работает изменение скорости unity
Вот есть скрипт, в котором есть 2 действия, изменяющие скорость - бег и приседание. Но почему - то всегда работает только одно из них, а другое игнорируется. В чем дело?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
public float speed;
public Transform camera;
private void Update()
{
if (Input.GetKey(KeyCode.LeftShift) && !Input.GetKey(KeyCode.LeftControl))
{
speed = 15;
if (Input.GetKey(KeyCode.S))
speed = 6;
}
else
{
speed = 6;
}
if (Input.GetKey(KeyCode.LeftControl) && !Input.GetKey(KeyCode.LeftShift))
{
camera.localPosition = new Vector3(0, -2, 0);
speed = 0;
}
else
{
camera.localPosition = new Vector3(0, 0, 0);
speed = 6;
}
if (Input.GetKey(KeyCode.W))
{
transform.localPosition += transform.forward * speed * Time.deltaTime;
}
}
}
В консоли ничего
Ответы (2 шт):
Автор решения: GoRoX98
→ Ссылка
Если правильно понял о чем речь и проблема в том, что ты пытаешься увеличить скорость и присесть одновременно, то ошибка в логике условий (ниже в коде цитирую их), поэтому оба действия и не могут быть выполнены:
if (Input.GetKey(KeyCode.LeftShift) && !Input.GetKey(KeyCode.LeftControl))
if (Input.GetKey(KeyCode.LeftControl) && !Input.GetKey(KeyCode.LeftShift))
Автор решения: sddgfdff
→ Ссылка
Проблема решилась, когда сделал эти изменения кода:
if (Input.GetKey(KeyCode.LeftShift))
{
speed = 15;
if (Input.GetKey(KeyCode.S))
speed = 6;
}
else if(!Input.GetKey(KeyCode.LeftShift))
{
speed = 6;
}
if (Input.GetKey(KeyCode.LeftControl))
{
camera.localPosition = new Vector3(0, -2, 0);
speed = 2;
}
else if (!Input.GetKey(KeyCode.LeftControl))
{
camera.localPosition = new Vector3(0, 0, 0);
}