为什么在动画师中改变两个状态之间的转换时,它不会缓慢而平滑地改变它?

它确实会更改状态并播放动画,但它是立即执行的,在状态之间更改时没有延迟慢动作。

接地是> HumanoidIdle

以及从 Grounded 到 Walk 的过渡。这部分工作正常,Grounded 和 Walk 之间的变化缓慢而平滑。

Walk 参数是 bool 类型。

http://img.mukewang.com/6173d10900011d5214030543.jpg

问题是从步行到使用的过渡。它立即从步行变为使用,没有延迟/慢动作。


http://img2.mukewang.com/6173d1140001989613990551.jpg

这是我用来触发状态的脚本:


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)

            {

                anim[1].SetTrigger("Use");

            }


            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);

        }

    }

}


婷婷同学_
浏览 146回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP