【发布时间】:2019-02-20 16:09:39
【问题描述】:
我正在尝试向我的可推送对象添加声音,并且只有一个简单的 if 语句来检查可推送对象是否正在移动。这个概念很简单,如果物体正在移动,则应该播放声音,而当它不移动时,则不应该播放。然而问题是,当我调试该值时,每 5 帧左右就有一个 0。这会导致声音工作不一致。我的脚本真的很简单,我试过改成fixedupdate,但是没用。我在某处读到物理计算是在 fixedUpdate 中完成的。
public class PushableObject : MonoBehaviour
{
Rigidbody rb;
AudioSource audioS;
bool rbIsMoving = false;
// Start is called before the first frame update
void Start()
{
rb = GetComponent<Rigidbody>();
audioS = GetComponent<AudioSource>();
}
// Update is called once per frame
void FixedUpdate()
{
if (rb.velocity == Vector3.zero)
{
Debug.Log("Not moving");
audioS.volume = 0f;
}
else
{
Debug.Log("Moving");
audioS.volume = 0.1f;
}
}
}
编辑:我刚刚发现如果玩家将可推动的物体推入墙壁,声音仍在播放,因此我认为我必须改变方式来确定物体是否在移动。
【问题讨论】:
标签: c# unity3d velocity rigid-bodies