协同ADX2和Unity制作节拍动画

前言

当所有组件和谐地进行协同工作时,我们所构建的虚拟效果才能达到最完美的效果。 这是我们进行游戏音频创作的核心,因为声音设计师的工作是制作在游戏环境中有意义且悦耳的声音。 我们可以通过音频引擎和游戏编辑引擎来完成项艰苦的工作。

本次,我们将探讨利用ADX2的BeatSync功能来控制2D骨骼动画。

使用Atom Craft

首先,我们可以将一些音乐加载到Atom Craft中,并将生成的素材拖到我们的CueSheet上,以创建新的和弦提示。 为了进行测试,我们可以创建两个单独的提示,一个为120 bpm,另一个为160 bpm。 最后,我们可以右键单击→新建对象→为每个提示创建BeatSync参数,然后在检查器中设置其BPM以匹配各个音乐提示的速度。

我们可以在Inspector中进一步调整拍号,并设置自己的自定义节拍模式(如果需要的话)。

现在,我们已经可以Build该项目,并将其加载到Unity中。

使用Unity

在Unity中执行ADX2的初始设置并加载ACB + ACF数据后,我们只需要做两件事即可使该系统正常工作:一些可以播放的带有BeatSync标记的音乐,以及一个可以接受接收BeatSync数据的游戏对象 。 动画与节奏联系在一起一定是一件有趣的事情,所以我们接下来展示如何控制2D骨骼动画的效果。

编辑Animation

我们只需要两个状态来演示动画效果,即“ Player_Idle”状态和“ Player_Dancing”状态。 可以将“Idle”状态设置为动画的一帧,而“Dancing”状态可以设为2帧以传达运动。 然后将这些状态挂钩到Animator中,在播放至“ Ducking Dance”状态后,会将播放器重置为“ Idle”状态。

17-3
17-4

设置脚本

现在,我们可以将新脚本加载到我们的动画播放器上,并设置一些代码以在节拍上运行。 所需的代码如下:

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

public class BeatSyncAnimation : MonoBehaviour
{
    private Animator animator;
    private SpriteRenderer sprite;
    private float bpm;

    void Start()
    {
        animator = gameObject.GetComponent();
        sprite = gameObject.GetComponent();

        CriAtomExBeatSync.SetCallback(BeatSyncCallback);
    }

    void BeatSyncCallback(ref CriAtomExBeatSync.Info info)
    {
        animator.Play("Player_Dancing");

        if (bpm != info.bpm)
        {
            Debug.Log("bpm is now :" + info.bpm);
            bpm = info.bpm;
        }
    }
}

ADX2毫不费力地协同了大多数正在发生的事情。首先,我们有一个回调函数,该函数引用了ADX2的CriAtomExBeatSync(每个节拍)中的信息。然后,它指示动画制作者播放“ Player_Dancing”动画。除此之外,我们还有一个小的if语句,如果更改了当前的BPM,它将记录当前的BPM(用于后续的播放)。这只是一个示例,说明了我们如何使用BeatSync检索其他信息,例如拍数或拍号,这些信息也可用在进一步控制游戏的其他方面上。

需要指出的是,控制Cue的播放与停止的代码仅调用CriAtomSource.Play()和CriAtomSource.Stop()函数。没有其它追踪代码用来检查BeatSync的状态(所有这些都由引擎内部控制)。一旦包含BeatSync的Cue停止,就不再调用该回调函数,而因为没有节拍调用此函数,因此动画也就跟随其自动停止。

小结

音乐在游戏中无处不在,无论是作为构建游戏世界的基础内容还是作为游戏循环中的核心元素。 使用上面简述的功能技术可以帮助您充分利用音乐,从而为用户带来更好的游戏体验。 还好,使用ADX2可以使交互式的音频制作变的更加快捷方便!

样本工程

注:该项目使用CRIWARE SDK for Unity V2.99.00,Unity V2019.1.6f1

Ringo

CRI Middleware Global Expansion Group

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据