Udemy-Unity制作类暗黑破坏神游戏记录-P65

2024-09-15
143看过
在导演控制脚本中编写逻辑,在动画播放时取消玩家的动作,禁用玩家的控制器脚本。动画停止时启用。
之前的战斗脚本中调用取消方法,只是停止了攻击,并没有取消移动,所有需要先加上

Mover:
  1.   public void Cancel()//取消
  2.   {
  3.       StopAttack();//调用停止攻击
  4.       target = null;//清除目标
  5.       mover.Cancel();//取消移动
  6.   }
复制代码




CinematicControlRemove:

  1. using RPG.Control;
  2. using RPG.Core;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using UnityEngine;
  6. using UnityEngine.Playables;
  7. namespace RPG.Cinematics
  8. {
  9.     //用于在播放导演播放期间控制玩家输入
  10.     public class CinematicControlRemove : MonoBehaviour
  11.     {
  12.         [SerializeField]GameObject player;
  13.         private void Start()
  14.         {
  15.             GetComponent<PlayableDirector>().played += DisableControl;
  16.             GetComponent<PlayableDirector>().stopped += EnableControl;
  17.             player = GetComponent<GameObject>();
  18.             player = GameObject.FindWithTag("Player"); // 查找带有 "Player" 标签的 GameObject
  19.         }
  20.         void DisableControl(PlayableDirector pd) // 播放时调用该方法
  21.         {
  22.             
  23.             player.GetComponent<ActionScheduler>().CancelCurrentAction(); // 取消玩家当前的动作
  24.             player.GetComponent<PlayerController>().enabled = false;// 禁用玩家控制组件
  25.         }
  26.         void EnableControl(PlayableDirector pd)//停止播放时调用该方法
  27.         {
  28.             player.GetComponent<PlayerController>().enabled = true; // 启用玩家控制组件
  29.         }
  30.     }
  31. }
复制代码



回复

举报

 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表