在导演控制脚本中编写逻辑,在动画播放时取消玩家的动作,禁用玩家的控制器脚本。动画停止时启用。
之前的战斗脚本中调用取消方法,只是停止了攻击,并没有取消移动,所有需要先加上
Mover:
- public void Cancel()//取消
- {
- StopAttack();//调用停止攻击
- target = null;//清除目标
- mover.Cancel();//取消移动
- }
复制代码
CinematicControlRemove:
- using RPG.Control;
- using RPG.Core;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.Playables;
-
- namespace RPG.Cinematics
- {
- //用于在播放导演播放期间控制玩家输入
- public class CinematicControlRemove : MonoBehaviour
- {
- [SerializeField]GameObject player;
- private void Start()
- {
- GetComponent<PlayableDirector>().played += DisableControl;
- GetComponent<PlayableDirector>().stopped += EnableControl;
- player = GetComponent<GameObject>();
- player = GameObject.FindWithTag("Player"); // 查找带有 "Player" 标签的 GameObject
- }
- void DisableControl(PlayableDirector pd) // 播放时调用该方法
- {
-
- player.GetComponent<ActionScheduler>().CancelCurrentAction(); // 取消玩家当前的动作
- player.GetComponent<PlayerController>().enabled = false;// 禁用玩家控制组件
-
- }
-
- void EnableControl(PlayableDirector pd)//停止播放时调用该方法
- {
-
- player.GetComponent<PlayerController>().enabled = true; // 启用玩家控制组件
- }
- }
- }
复制代码
|