网站推广策划方案大数据精准获客,淄博高端网站设计,android编程语言,建一个网站的手机电脑版1.技能系统概念首先让我们了解一下游戏的技能本质是什么#xff0c;以投掷剑为例子#xff0c;当玩家使用这个技能时#xff0c;首先会播放玩家的动画#xff0c;随后通过技能脚本创建一个剑的对象#xff0c;当剑回收时会再次调用脚本#xff0c;让它朝向玩家飞来并销毁…1.技能系统概念首先让我们了解一下游戏的技能本质是什么以投掷剑为例子当玩家使用这个技能时首先会播放玩家的动画随后通过技能脚本创建一个剑的对象当剑回收时会再次调用脚本让它朝向玩家飞来并销毁自己所以我们可以创建一个技能管理器将我们所有的技能脚本放在这个管理器中。2.创建玩家管理器创建PlayerManage脚本 public static PlayerManage instance;//单例模式使用单例模式可以使我们更加方便的找到玩家的组件public Player player;//只需初始化一次不需要我们反复用GameObject.Find来寻找玩家组件 public void Awake(){if (instance ! null)//确保我们只有一个实例{Destroy(instance.gameobject);}else{instance this;}}修改SkeletonBattleState脚本player PlayerManage.instance.player.transform;//可以直接获取Player信息在SkeletonGroundedState脚本中也做同样的修改创建一个空对象PlayerManage并挂载PlayerManage脚本指定Player的对象这样我们就实现了玩家管理器3.创建技能管理器创建Skill脚本所有技能的父类 [SerializeField] private float cooldown;private float coolDownTime;//每个技能都有的冷却时间 protected virtual void Update(){coolDownTime - Time.deltaTime;} public virtual bool CanbeUsed()//判断是否可以使用技能{if(coolDownTime0){UseSkill();coolDownTime cooldown;return true;} else{Debug.Log(i am in cooldown);return false;}}public virtual void UseSkill()//使用技能{ }创建Dash_Skill脚本public class Dash_Skill : Skill//继承
{public override void UseSkill(){base.UseSkill(); Debug.Log(i am clone);//这里仅作调试具体我们想实现一个冲刺后留下一个可以攻击敌人的幻影}
}创建SkillManage脚本public static SkillManage instance;//同样单例模式 public Dash_Skill dash { get; private set; }//获取冲刺克隆技能public void Awake(){if(instance ! null){Destroy(instance);}else{instance this;}} private void Start(){dash GetComponentDash_Skill();} }Player脚本我们可以删除这里定义的冲刺冷却时间修改 public void CheckForDashInput(){if(isWallDetected()){return;} if(Input.GetKeyDown(KeyCode.LeftShift)SkillManage.instance.dash.CanbeUsed())//这里调用CanbeUsed即可{ dashDir Input.GetAxisRaw(Horizontal); if(dashDir0){dashDir facingDir;}stateMachine.ChangeState(dashState);}}演示