удерживая движение и лихой, нажав на клавишу shift - PullRequest
0 голосов
/ 26 мая 2019

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

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

public class Dash : MonoBehaviour
{

private Rigidbody rb;

public float dashSpeed;
private float dashTime;
public float startDashTime;
private int direction;


void Update()
{
    //dash
    if (direction == 0)
    {
        if (Input.GetKey(KeyCode.LeftShift) && Input.GetKeyDown(KeyCode.A))
        {
            direction = 1;
        }
        else if (Input.GetKey(KeyCode.LeftShift) && Input.GetKeyDown(KeyCode.D))
        {
            direction = 2;
        }
        else if (Input.GetKey(KeyCode.LeftShift) && Input.GetKeyDown(KeyCode.W))
        {
            direction = 3;
        }
        else if (Input.GetKey(KeyCode.LeftShift) && Input.GetKeyDown(KeyCode.S))
        {
            direction = 4;
        }

Я хочу, чтобы персонаж ринулся влево. Я хочу иметь возможность удерживать клавишу «А», чтобы двигаться в этом направлении, и нажать «Shift», чтобы сделать короткую черту.

если я держу «А», я перехожу в направлении, но «Сдвиг» ничего не делает. если я удерживаю «Shift», затем нажимаю «A», персонаж делает черту, которую я ожидаю.

1 Ответ

0 голосов
/ 27 мая 2019

Вместо:

if (Input.GetKey(KeyCode.LeftShift) && Input.GetKeyDown(KeyCode.A))

Попробуйте:

if (Input.GetKeyDown(KeyCode.LeftShift) && Input.GetKey(KeyCode.A))

Input.GetKeyDown только возвращает true в первом кадре, когда нажата клавиша, а Input.GetKey возвращает true каждый кадр, в котором вы держите клавишу

...