如何使用在Animator中创建的Blend Tree?它什么也不做,不会播放动画

时间:2018-07-25 21:21:30

标签: c# unity3d

我有Animator Controller和一个状态名称Grounded。 Grounded中的动画是HumanoidIdle。

然后我添加了从Grounded到Walk状态的过渡。

Transition Grounded to Walk

然后在脚本中,一旦玩家离开游戏中的某个特定位置,它将使npc 1面向对象旋转并开始行走动画:

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

public class SpaceshipCutscene : MonoBehaviour
{
    public Transform player;
    public Transform[] npcs;
    public Transform console;
    public Camera FPSCamera;
    public Camera mainCamera;
    public Animator[] anim;
    public float rotationSpeed = 3f;

    private bool moveNpc = false;

    // Use this for initialization
    void Start()
    {

    }

    private void Update()
    {
        if (moveNpc)
        {
            // Soldier 2 rotating and looking at player
            Vector3 dir = player.position - npcs[0].position;
            dir.y = 0; // keep the direction strictly horizontal
            Quaternion rot = Quaternion.LookRotation(dir);
            // slerp to the desired rotation over time
            npcs[0].rotation = Quaternion.Slerp(npcs[0].rotation, rot, rotationSpeed * Time.deltaTime);

            float dist = Vector3.Distance(npcs[1].position, console.position);
            if (dist < 4f)
            {

            }

            Vector3 dirToComputer = console.transform.position - npcs[1].position;
            dirToComputer.y = 0;
            Quaternion rot1 = Quaternion.LookRotation(dirToComputer);
            npcs[1].rotation = Quaternion.Slerp(npcs[1].rotation, rot1, rotationSpeed * Time.deltaTime);
        }
    }

    private void OnTriggerExit(Collider other)
    {
        if (other.gameObject.tag == "SpaceshipCutscene")
        {
            FPSCamera.enabled = false;
            mainCamera.enabled = true;
            moveNpc = true;
            anim[0].SetBool("Aiming", true);
            anim[1].SetBool("Walk", true);
        }
    }
}

现在,我要使npcs 1距控制台的距离小于4时,启动“步行到使用”之间的动画混合树组合:

在此里面:

if (dist < 4f)
{

}

因此,在Animator中,我创建了一个新的Blend Tree,称为“行走”。 在内部,我添加了两个运动场。一种用于步行,另一种用于Use_Loop。

混合树行走在左侧。我添加了从“接地”到“行走”的过渡,但不确定这样做是否正确。

Walking

在“接地”和“行走”之间的过渡中,我什么都没做。

然后在混合树中:

Blend Tree

如果我在预览中点击播放,然后用鼠标缓慢更改Speed值,它将在Walk和Use_Loop之间缓慢而平滑地切换。

这是我想要的,一旦玩家的距离小于脚本中的4,以便从“走动”到“ Use_Loop(Use)”缓慢而平滑地变化。

0 个答案:

没有答案