实现LOL游戏中英雄技能的释放

您所在的位置:网站首页 lol技能指示器 实现LOL游戏中英雄技能的释放

实现LOL游戏中英雄技能的释放

#实现LOL游戏中英雄技能的释放| 来源: 网络整理| 查看: 265

今天我们要实现的是LOL中英雄技能的释放,当鼠标点击该技能或者按下代表该技能的按键时,出现技能的攻击范围圈,以及只能指示(线性指示或者范围圈指示等),在这里演示的为非指定向技能,也就是可以在范围内随意释放,不必对着敌方英雄释放的技能,用法一样,难点就是如何在一个脚本中区分各个按键的释放,在这里使用的是一个 bool开关,详细代码参照如下:

public GameObject AttackCircle_Q; //传入攻击范围 public GameObject AttackCircle_W; public GameObject AttackCircle_E; public GameObject AttackCircle_R; public GameObject SkillCircle_Q;//传入技能指示圈 public GameObject SkillCircle_W; public GameObject SkillCircle_E; public GameObject SkillCircle_R; public GameObject Skill_Q;//传入Q技能的释放效果 public GameObject Skill_W; public GameObject Skill_E; bool Q = false;//进入Q技能生效的条件 bool W = false; bool E = false; bool R = false; float CD_Q = 5;//Q的CD计时器 bool CD_Q_Open = false;//进入Q计时器的条件 void Update () { RaycastHit hit;//射线点 Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//获取鼠标位置 从主摄像机发出射线 Physics.Raycast(ray, out hit, 1000);//得到hit值(时刻检测射线的射点) //获取Q键 且Q 的CD状态为满,否则按下Q则不生效(可在else设计提示该技能未准备完毕的提示) if (Input.GetKeyDown(KeyCode.Q) && CD_Q == 5) { if (AttackCircle_Q.activeSelf == false)//若果Q的攻击范围圈没有打开 { AttackCircle_Q.SetActive(true);//打开攻击范围圈 SkillCircle_Q.SetActive(true);//打开技能指示圈 Q = true;//Q的入口开放(按下Q只能激活Q的入口) } } if (Q==true )//Q的入口打开 { if (SkillCircle_Q.activeSelf == true)//如果技能指示圈打开 { //改变技能圈的位置为鼠标的位置,调整一下Y轴位置即可 SkillCircle_Q.transform.position = new Vector3(hit.point.x, 0.4f, hit.point.z); } if (Input.GetMouseButtonDown(1) && SkillCircle_Q.activeSelf == true)//如果鼠标右键按下(取消释放) { AttackCircle_Q.SetActive(false);//攻击范围圈关闭 SkillCircle_Q.SetActive(false);//技能指示圈关闭 } if (Input.GetMouseButtonDown(0) && SkillCircle_Q.activeSelf == true)//如果左键按下(可在此时判定伤害等操作) { CD_Q_Open = true; //CD计时器开始倒数 AttackCircle_Q.SetActive(false);//攻击范围圈关闭 SkillCircle_Q.SetActive(false);//技能指示圈关闭 Skill_Q.transform.position = SkillCircle_Q.transform.position;//改变技能释放效果的位置 Skill_Q.SetActive(true);//激活释放效果 StartCoroutine(hideSkill_Q());//让技能通过协程存在一段时间后失活 } if (CD_Q_Open == true)//计时器开始运行 { CD_Q -= Time.deltaTime;//开始减实时时间 //让CD的时间在总CD的比例等于覆盖在技能栏上方的另一张图片改变其fillAmount值实现冷却中转圈的效果 GameObject.Find("Q_Top").GetComponent().fillAmount = CD_Q * 1f / 5; //让图片下的文本组件的内容为处于变化中的CD的数字,实现倒计时的效果 GameObject.Find("Q_Top").GetComponent().transform.FindChild("Text").GetComponent().text = CD_Q.ToString(); if (CD_Q


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3