它确实会更改状态并播放动画,但它是立即执行的,在状态之间更改时没有延迟慢动作。接地是> HumanoidIdle以及从 Grounded 到 Walk 的过渡。这部分工作正常,Grounded 和 Walk 之间的变化缓慢而平滑。Walk 参数是 bool 类型。问题是从步行到使用的过渡。它立即从步行变为使用,没有延迟/慢动作。这是我用来触发状态的脚本: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);        }    }}
                    
                    
                1 回答
- 1 回答
 - 0 关注
 - 175 浏览
 
添加回答
举报
0/150
	提交
		取消
	