Не могу понять, как сделать звук при ходьбе ... (2д) - PullRequest
0 голосов
/ 25 апреля 2020

, поэтому я пытаюсь сделать так, чтобы у игрока был звук ходьбы (добавлю массив случайных звуков ходьбы после выяснения), когда он держит d или a, но если я остановлю звук (компонент get .stop), никогда не будет услышан.

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

public class FootScript : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKey(KeyCode.D))
        {
            GetComponent<AudioSource>().Play();
        } else
            GetComponent<AudioSource>().Stop();

    }
}

1 Ответ

0 голосов
/ 25 апреля 2020

Есть некоторые проблемы с этим кодом.

Тот факт, что вы звоните Update, каждый кадр не помогает. В основном Play либо Stop будет называться ужасно много, и вызов может быть очень дорогим.

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

Примечание: код псевдо

Итак, я попытаюсь найти это, но я ожидал чего-то как это:

bool IsMovementAudioPlaying = false;

// Update is called once per frame
void Update()
{
    //similar for A
    if (Input.GetKey(KeyCode.D) && !IsMovementAudioPlaying )
    {
        IsMovementAudioPlaying = true;
        GetComponent<AudioSource>().Play();
    } 

    //similar for A, you can use different sounds if you want
    else if (IsMovementAudioPlaying)
    {
        IsMovementAudioPlaying = false;
        GetComponent<AudioSource>().Stop();
    }
}

Вам нужно немного поиграть с ним, чтобы получить лог c права на поддержку обоих ключей.

Основная идея здесь заключается в том, что вы отслеживаете action, который должен быть выполнен, и сделать это один раз, только если это необходимо.

Вы также можете переписать эту концепцию, чтобы применить ее в рендере l oop, но обычно события помогают вам структурировать это лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...