Задать вопрос
@oculisto

Как опрашивать кнопку много раз но выполнять действие один раз?

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

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SpaceshipDrag : MonoBehaviour
{

private Rigidbody2D _rigidbody2D;
public Sprite SpaceshipSimpleIdle;
public Sprite SpaceshipSimpleLowburn;
public Sprite SpaceshipSimpleLowBrakeburn;
public bool BrakeMode;
private SpriteRenderer spriteRenderer;
public bool X;

private void Awake()
{
_rigidbody2D = GetComponent();
spriteRenderer = GetComponent();
}

void FixedUpdate()
{
X = !BrakeMode;
if (Input.GetKey(KeyCode.F))
{
BrakeMode = !BrakeMode;

}
if (!Input.GetKey(KeyCode.W))
{
spriteRenderer.sprite = SpaceshipSimpleIdle;
}
if (Input.GetKey(KeyCode.W))
{
if (BrakeMode == true)
{
spriteRenderer.sprite = SpaceshipSimpleLowBrakeburn;
_rigidbody2D.AddForce(transform.up * 5000);
}
else
{
spriteRenderer.sprite = SpaceshipSimpleLowburn;
_rigidbody2D.AddForce(transform.up * 2000);
}

}
if (Input.GetKey(KeyCode.A))
{
_rigidbody2D.AddTorque(200);
}
if (Input.GetKey(KeyCode.D))
{
_rigidbody2D.AddTorque(-200);
}
}

}
  • Вопрос задан
  • 92 просмотра
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
GavriKos
@GavriKos Куратор тега Unity
проблема в том, что вы опрашиваете кнопку в fixed update. Перенесите в update
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
Я думаю сделать постоянный опрос кнопки но действие выполнить один раз.
вообще то достаточно отлавливать событие нажатия кнопки вообще, и проверять какую именно нажали. на нужную реагировать
Ответ написан
Комментировать
Priskly
@Priskly
Миллиардер, филантроп, 3D, Unity C# программист
Кинь проверку в обычный Update, а вместо GetKey пиши GetKeyDown или GetButtonDown, забыл уже.

Да и вообще эта система ввода уже стара, только для макета пойдёт, советую использовать или Input Manager или Input System. Тот же курс от CodeMonkey или книга от Joseph Hocking поможет. Насчёт второго если надо пиши в тг "@Priskly" , скину русскую версию с кодом все дела
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы