今天我们要实现的是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<UnityEngine.UI.Image>().fillAmount = CD_Q * 1f / 5;//让图片下的文本组件的内容为处于变化中的CD的数字,实现倒计时的效果GameObject.Find("Q_Top").GetComponent<UnityEngine.UI.Image>().transform.FindChild("Text").GetComponent<UnityEngine.UI.Text>().text = CD_Q.ToString();if (CD_Q <= 0)//当CD转完(因为每一帧的不稳定性因此加上小于号以免出问题){Q = false;//关闭Q的入口CD_Q = 5;//让CD重新等于5CD_Q_Open = false;//把倒计时开关关闭GameObject.Find("Q_Top").GetComponent<UnityEngine.UI.Image>().transform.FindChild("Text").GetComponent<UnityEngine.UI.Text>().text = null;//倒计时的数字消失}}}IEnumerator hideSkill_Q()//协程实现Q的延迟存在{yield return new WaitForSeconds(1.5f);//等待1.5秒Skill_Q.SetActive(false);//让技能释放消失}public void Open_Q()//拓展方法:实现鼠标点击该技能也能实现操作,绑定在该技能的button上{if (AttackCircle_Q.activeSelf == false)//若果Q的范围圈没有打开{AttackCircle_Q.SetActive(true);//打开SkillCircle_Q.SetActive(true);//打开攻击范围圈Q = true;//获得Q的入口}}

先展示一下UI界面,需要了解的是该技能为一张图片,上方复制并粘贴了一个图片并添加了button组件,且将上方的图片改为 Fillde 图片类型,同时 Fill Method 类型为Radial 360 ,在 button 组件上绑定以上的脚本的方法 Open_Q()。

这里展示了Q技能的释放,正在旋转的技能指示器需要自己绑定一个旋转的脚本,把技能指示器、技能释放效果、技能范围圈都一开始设置为不激活状态,其他技能按照这个模板编写便可达到一样的效果:

鼠标也能进行操作:

好啦!技能的释放就介绍到这里啦~~我是博主小磊,欢迎关注、分享、留言给我哦!!

实现LOL游戏中英雄技能的释放相关推荐

  1. 游戏中的技能如何而来? 为ARPG设计一个好用的BUFF系统

    转自:游戏中的技能如何而来? 为ARPG设计一个好用的BUFF系统 - GameRes游资网 游戏中有宏大的场景地图,丰富的游戏剧情,逼真的人物角色.但要让角色(职业)炫酷起来,还是要靠各个职业的技能 ...

  2. 状态模式设计程序:游戏中英雄根据不同的体力值可以进行休息、防御、普通攻击、技能攻击。

    资源下载地址:https://download.csdn.net/download/sheziqiong/85639034 一.应用场景与案例描述 我们经常在课余时间玩游戏以放松身心,缓解压力.在很多 ...

  3. buff系统 游戏中_游戏中的技能如何而来? 为ARPG设计一个好用的BUFF系统

    游戏中有宏大的场景地图,丰富的游戏剧情,逼真的人物角色.但要让角色(职业)炫酷起来,还是要靠各个职业的技能来烘托.技能系统,根据游戏类型不同而会有不同,ARPG.回合类RPG.SLG类各个游戏都有技能 ...

  4. 【100个 Unity实用技能】| 游戏中使技能或装备跟随角色环绕,持续旋转

    Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 . 包括游戏开发.美术.建筑.汽车设计.影视在内的所有创作者,借助 Unity 将创意 ...

  5. buff系统 游戏中_游戏策划如何设计一个好用的BUFF系统!

    之前一篇文章,介绍了以下是游戏系统中技能设计需要考虑的一些问题,如果你还没看过,那么就请移步阅读<游戏中的技能是如何而来的?> 在这篇文章中也提到了,技能中一个很重要的组成部分就是BUFF ...

  6. 23种设计模式在MMORPG游戏中的应用

    设计原则和设计模式是软件工程领域的两个重要概念,设计原则提供了编写高质量.可维护代码的指导思想,而设计模式则为特定问题提供了经过验证的解决方案.下面是7大设计原则和23种设计模式的总结: 7大设计原则 ...

  7. 游戏中的AI玩伴,会是“神队友”吗?

    文 | 颜璇 来源 | 智能相对论(ID:aixdlun) "一代英豪"暴雪迎来了自己的暴风雪. 2月13日,动视暴雪公布了2018年全年财报.财报显示,暴雪第四季度营业收入仅为2 ...

  8. 演绎真实世界?看人性在游戏中的养成之路

    有人说:上一代把网络作为工具,这一代以网络为世界.不可否认,这话是有一定道理的. 联系世界就意味着交流互动,网络交流的便捷性是有目共睹的.其中网络游戏里人与人之间的交互就属于网络交流. 我们在游戏中扮 ...

  9. 王者荣耀中皮肤和英雄技能java实现

    #王者荣耀中一个英雄是怎么被产生的? 皮肤和技能实现 文章目录 前言 一.前期准备 二.没有钱买皮肤,我就自己造! 2.1 皮肤选择界面设计 2.2 如何将皮肤属性赋给英雄 三.没有牛逼的英雄技能,玩 ...

最新文章

  1. ARP监控工具ARPalert
  2. oracleI基础入门(1)--背景
  3. 流式套接字(SOCK_STREAM),数据报套接字 (SOCK_DGRAM) 的比较
  4. leetcode 299. Bulls and Cows | 299. 猜数字游戏(Java)
  5. oracle ebs po_header_all含税单价,Oracle EBS-追踪PO全过程
  6. Apache版本兼容性问题
  7. git使用—rebase还是merge
  8. HTTP协议发展历程
  9. ML、DL、CNN学习记录8
  10. 官方暗示与TÜV莱茵合作? MIUI12真的不远了
  11. SpringCloud学习笔记017---分布式之数据分片处理
  12. docker php安装gd扩展_Linux安装redis及安装php-redis扩展
  13. 【千律】C++基础:使用动态数组vector初始化自定义类
  14. IBDP1 经济好学吗?学习建议分享
  15. 【pandas】--DataFrame数据筛选(二)
  16. Deep learning based multi-scale channel compression feature surface defect detection system
  17. 基于花季A传媒ABP落地领域驱动设计-02.聚合和聚合根的最佳实践和原则
  18. Swiper 轮播插件
  19. 如何使用COM-Hunter检测持久化COM劫持漏洞
  20. Windows--从dos下进入D盘,切换盘符

热门文章

  1. 微信学习:我的学习测试环境(刚看我的DZd动力空间后台,发现推荐后双方有30软妹币福利,双赢哦)
  2. Win系统 - 如何添加新用户,怎么添加管理员帐户?
  3. linux系统etc什么意思,请问linux下的etc是什么意思?
  4. 相见恨晚的18本IT界经典必看的书籍
  5.  php怎么做注册短信验证码
  6. 脚踏实地小组的抓包实验
  7. Python函数曲线拟合
  8. Python turtle画玫瑰
  9. vue兼容IE 360
  10. NANK南卡和明基护眼台灯,到底哪个好?全方位测评两款热门护眼台灯