2 回答
TA贡献1784条经验 获得超7个赞
你只需要在播放音乐之前添加一个条件来检查它是否已经在播放。喜欢....
void Update()
{
if (Input.GetKey("up") == true || Input.GetKey("down") == true || Input.GetKey("left") == true || Input.GetKey("right") == true)
{
Drive();
if (!CarEngine.isPlaying)
CarEngine.Play();
}
else
{
if (CarEngine.isPlaying)
{
Debug.Log("Stop playing....");
CarEngine.Stop();
}
}
}
TA贡献1826条经验 获得超6个赞
首先,我看到有一些不必要的代码行,我们将消除它们。
然后,我们创建了一个方法来使用一个布尔参数来重现声音,该参数将用于重现或停止音频,这个参数将是一个布尔值,那么只有当该布尔值为真时才会拒绝音频,所以你必须说它按下一个键时为真。
否则,如果您简化工作,实际上您正在验证从第一个上面到最后一个 else 中的哪一个满足,如果满足则执行第一行,否则执行 else。
using UnityEngine;
public class RaceCarMovement : MonoBehaviour {
float drivespeed = 0.3f;
private AudioSource CarEngine;
private void Awake()
{
CarEngine = GetComponent<AudioSource>();
}
void Start ()
{
}
void Update()
{
if (Input.GetKey("up"))
{
transform.position = new Vector3(transform.position.x + drivespeed, transform.position.y);
PlayCarSound(true);
}
else if (Input.GetKey("down"))
{
transform.position = new Vector3(transform.position.x - drivespeed, transform.position.y);
PlayCarSound(true);
}
else if (Input.GetKey("left"))
{
transform.position = new Vector3(transform.position.x, transform.position.y + drivespeed);
PlayCarSound(true);
}
else if (Input.GetKey("right"))
{
transform.position = new Vector3(transform.position.x, transform.position.y - drivespeed);
PlayCarSound(true);
}
else
{
PlayCarSound(false);
}
}
private void PlayCarSound(bool play)
{
if(play /*&& !CarEngine.isPlaying*/) CarEngine.Play();
else CarEngine.Stop();
}
}
- 2 回答
- 0 关注
- 198 浏览
添加回答
举报