Unity 3D:脚步声音在最初的几毫秒内循环播放,而不是先播放完整的声音然后循环播放

问题描述 投票:0回答:1

当我在游戏中移动时,不是完全播放声音,而是循环播放几毫秒。

这是我的代码:

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

public class Footsteps : MonoBehaviour
{
    public AudioSource audioSource;

    public PlayerMovement pM;

    void Start()
    {
        audioSource.Stop();
    }

    void Update()
    {
        PlaySound();
    }

    public void PlaySound()
    {
        if (Input.GetKey(KeyCode.W))
        {
            audioSource.Play();
        }
        else
        {
            audioSource.Stop();
        }
    }
}

很抱歉,如果我的代码不是很好,我绝对不是C#。

视频示例:https://www.youtube.com/watch?v=uHqoqIjncbA

任何建议将不胜感激!

c# unity3d audio
1个回答
1
投票

只要按下键,就会调用方法Input.GetKey()。为此,您可以像以下示例一样使用Input.GetKeyDown()

    public void PlaySound()
        {
            if (Input.GetKeyDown(KeyCode.W))
            {
                audioSource.Play();
            }
            else if(Input.GetKeyUp(KeyCode.W))
            {
                audioSource.Stop();
            }
        }

还有其他方法可以产生这种声音,但是这种简单的方法应该可以。

参考:

https://docs.unity3d.com/ScriptReference/Input.GetKey.htmlhttps://docs.unity3d.com/ScriptReference/Input.GetKeyDown.html

© www.soinside.com 2019 - 2024. All rights reserved.