基本上,我需要一个脚本来播放行走声音,而我的播放器在行走时会发出行走声音。由于我的播放器设置方式,需要使用输入和键...
我已经制作了这个基本脚本,但它并没有很好地工作。从跑步过渡 - >走路 - >停止并运行 - >停止等等不能始终如一地工作。另一个问题是按下移位而静止不动也会播放声音。我已经尝试过SHIFT&& W || W&& SHIFT,它只是不起作用。
任何帮助都将非常感谢!!
我的Foley.cs脚本:
using UnityEngine;
using System.Collections;
public class Foley : MonoBehaviour {
public AudioClip Footsteps;
public AudioClip RunningSound;
// Update is called once per frame
void Update () {
if (Input.GetKeyDown(KeyCode.LeftShift) && !audio.isPlaying)
{
audio.clip = RunningSound;
audio.loop = true;
audio.Play();
} else if (Input.GetKey(KeyCode.W) && !audio.isPlaying && !Input.GetKey(KeyCode.LeftShift)) {
audio.clip = Footsteps;
audio.loop = true;
audio.Play();
}
if (Input.GetKeyUp(KeyCode.W) && audio.isPlaying)
{
audio.Stop();
}
if (Input.GetKeyUp(KeyCode.LeftShift) && audio.isPlaying)
{
if (Input.GetKey(KeyCode.W))
{
audio.clip = Footsteps;
audio.loop = true;
audio.Play();
} else {
audio.Stop();
}
}
}
}
答案 0 :(得分:0)
这个脚本应该基本上做你想要的。在'w'播放步行音,在w + shift上播放跑声。
#pragma strict
var walk : AudioClip;
var run : AudioClip;
var isWalking : boolean = false;
var isRunning : boolean = false;
function Update()
{
GetState();
PlayAudio();
}
function GetState()
{
if ( Input.GetKey(KeyCode.W))
{
if ( Input.GetKey( "left shift" ) || Input.GetKey( "right shift" ) )
{
// Running
isWalking = false;
isRunning = true;
}
else
{
// Walking
isWalking = true;
isRunning = false;
}
}
else
{
// Stopped
isWalking = false;
isRunning = false;
}
}
function PlayAudio()
{
if ( isWalking )
{
if ( audio.clip != walk )
{
audio.Stop();
audio.clip = walk;
}
if ( !audio.isPlaying )
{
audio.Play();
}
}
else if ( isRunning )
{
if ( audio.clip != run )
{
audio.Stop();
audio.clip = run;
}
if ( !audio.isPlaying )
{
audio.Play();
}
}
else
{
audio.Stop();
}
}