为什么在使用动画事件向角色添加音频脚步时,只有一只脚播放声音?

时间:2019-01-24 14:52:32

标签: c# unity3d

Animator中的动画是HumanoidWalk 在底部的“动画”选项卡中的动画检查器中,我单击了“事件”,单击以添加事件名称,该函数的功能为“步进”,并将时间滑块移动到0.67,在角色的预览窗口中移动了滑块,因此右脚靠近地面并单击“应用”:

Foot1

然后我做同样的事情,但是将时间几乎改变为0.7,再次调用功能Step,现在在预览窗口中,另一只脚靠近地面并单击Apply:

Foot2

我向层次结构中的角色添加了音频源组件和脚本名称“脚步”:

Foot3

脚本本身:

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

public class FootSteps : MonoBehaviour
{
    [SerializeField]
    private AudioClip[] clips;

    private AudioSource audioSource;
    private GameObject[] Foots;

    private void Awake()
    {
        audioSource = GetComponent<AudioSource>();
        Foots = GameObject.FindGameObjectsWithTag("Foot");
    }

    private void Step()
    {
        AudioClip clip = GetRandomClip();
        audioSource.PlayOneShot(clip);
    }

    private AudioClip GetRandomClip()
    {
        return clips[UnityEngine.Random.Range(0, clips.Length)];
    }
}

在Clips脚本的层次结构中,我只为测试添加了相同的8个音频剪辑,所以我只能添加1个,没关系:

Foot4

在运行游戏时,我用蓝色圆圈标记,只有此脚会发出脚步声音。如果我将时间更改为相同的0.67,它将播放两个相同的声音,因此听起来像是一个声音;或者,如果时间是0.67和0.7,则将听到两步,但只在左腿脚上。

Foot5

无论我更改预览动画支脚多少次,第二支脚都永远不会播放声音。

我试图按照本教程的说明进行操作,但没有成功:

Adding Footstep Sounds to your Unity game with Animation Events

应该很简单,但是只有一只脚在工作。 我不知道我在想什么。

1 个答案:

答案 0 :(得分:1)

您要在错误的时间戳记上添加事件。看一下“事件”时间轴中的小白线。在您的第一个屏幕截图中,该行位于0:33之后,而在您的第二个屏幕截图中,该行位于0:83之后。那应该是您的活动所在(不是0:67和0:70)。