你知道王者荣耀是怎么实现技能范围指示器的吗?

在这里插入图片描述

引言

一文教会你实现类似王者荣耀的技能范围指示器。

技能范围指示器是许多游戏中常见的一个元素,特别是在MOBA(多人在线战斗竞技场)游戏中,如《王者荣耀》、《英雄联盟》等。

本文将介绍如何在Cocos Creator中实现一个技能范围指示器,非常详细

本文源码和源工程在文末获取,小伙伴们自行前往。

1.什么是技能范围指示器?

在这里插入图片描述

它是一个可视化效果,通常以图形或颜色的形式呈现在游戏画面上,用来显示英雄或角色技能的有效范围,以便玩家更好地理解技能的影响范围和使用

我们接着来看。

2.技能范围指示器有什么用?

以下是技能范围指示器的主要特点和作用:

  1. 技能范围可视化:技能范围指示器通常以圆形、锥形、方形或自定义形状的方式显示在游戏地图上。这使玩家能够直观地看到技能的作用范围。

  2. 技能释放位置:它还标示了技能释放的位置,以确定技能将在何处生效。这对于精确瞄准敌人或友方角色非常重要。

话不多说,一起来看下如何在Cocos Creator中实现一个技能范围指示器

3.一起来实现技能范围指示器

我们根据以下的步骤一步一步来实现技能范围指示器:

1.环境

引擎版本:Cocos Creator 3.8.1

编程语言:TypeScript

2.资源准备

首先在PS中简单做几个白色的技能范围图,包括圆、扇形、矩形带箭头,非常的简单(不是),大家可以自行制作,还可以添加各种图案花纹

我PS是业余的

由于我们重点是实现技能范围指示器,其他的一些比如虚拟摇杆、角色控制、角色等,我们直接借用一下Cocos商城麒麟子大神的免费资源“KylinsEasyController”创建项目。

站在巨人的肩膀上

将图片资源复制进工程:

有手就行

然后给每张图片资源制作成材质球

一步一步来

最后把资源做成预制体

准备完毕

3.编写代码

首先定义技能范围类型(包括整个范围技能、指向性技能、扇形范围技能和小范围技能)和技能范围Prefab节点(对资源预制的引用)两个枚举,方便后面使用。

最重要齐齐整整

然后定义SkillRangeIndicator技能范围指示器组件。在start中初始化部分属性,监听虚拟摇杆的事件和在onDestroy中做对应事件的销毁。

主角登场

由于虚拟摇杆的源码中没有这部分事件,我们进行简单修改添加,包括:

  • 手指开始触摸事件TOUCH_START
  • 当手指在屏幕上移动时TOUCH_MOVE
  • 手指结束触摸事件TOUCH_END
  • 当手指在目标节点区域外离开屏幕时事件TOUCH_CANCEL

稍微动下手脚

添加对不同的技能按钮事件的监听,根据点击不同按钮分别创建不同类型的技能范围指示器。

按需选择

创建技能范围指示器,根据类型创建对应所需的资源

一对多

根据技能类型加载对应的预制体,并且设置大小和缩放

高度自定义

获取并加载资源的方法,通过resources.load加载预制体,并且通过instantiate克隆生成对应资源。

日常操作

根据玩家在虚拟摇杆上的移动,随时更新指示器的方向和位置。其中关键是通过

  • event.touch.getUILocation()获取当前手指位置
  • event.target.getWorldPosition()获取按钮位置
  • this.mainCamera.node.eulerAngles.y摄像机的欧拉角旋转。

并且通过他们计算出实际上技能指示器的方向和位置。算法如下:

真不复杂

lateUpdate中不断根据上面计算出来的方向和位置通过setRotationFromEulersetPosition更新对应指示器的显示。

日常操作2

还需要绘制一下在技能指示器选择目标的过程中,在虚拟摇杆上的显示,由于笔者比较,直接用Graphics组件去实现(简直不要太方便)。其中包括取消释放技能的逻辑(当手指移动到X处则取消)。

简直不要太方便

当手指移动到X处时,我们需要把技能指示器的颜色改成红色表示取消释放技能。改变指示器颜色changeColor的代码如下,其中包括根据名字递归查找节点的方法findAllQuadNodesRecursive,修改材质颜色的核心方法material.setProperty('color', color)

修改材质颜色的方法

最后是松开按钮时,隐藏技能指示器,并且根据状态判断是否需要释放技能。

再来一次

为了更好的演示,主角简单的播放“飞鸡动画”表示释放技能。

临时加戏

需要修改了源码CharacterMovementonJump跳跃方法,支持设定方向和力度

稍微改一下

4.效果演示

原地放技能。
在这里插入图片描述

指向性技能。
在这里插入图片描述

扇形范围技能。
在这里插入图片描述

局部选择技能。

在这里插入图片描述

取消释放技能。

在这里插入图片描述

结语

在哪里可以看到如此清晰的思路,快跟上我的节奏!关注我,和我一起了解游戏行业最新动态,学习游戏开发技巧。

我是"亿元程序员",一位有着8年游戏行业经验的主程。在游戏开发中,希望能给到您帮助, 也希望通过您能帮助到大家。

AD:笔者线上的小游戏《贪吃蛇掌机经典》《重力迷宫球》《填色之旅》大家可以自行点击搜索体验。

实不相瞒,想要个在看!请把该文章分享给你觉得有需要的其他小伙伴。谢谢!

推荐专栏:

8年主程手把手打造Cocos独立游戏开发框架

和8年游戏主程一起学习设计模式

游戏开发的技巧、心得、资讯

从零开始开发贪吃蛇小游戏到上线系列

本文源码和源工程可通过阅读原文获取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/142960.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Programming Abstractions in C阅读笔记:p196

《Programming Abstractions in C》学习第63天,p196总结。涉及到编程之外的知识,依然是读起来很费劲,需要了解作者在书中提到的人物(Edouard Lucas)、地点(Benares)、神话传说(Brahma)等等。虽然深知自己做不到对人文知识,历史知识…

RT-DETR算法优化改进:PPHGNetV2 Backbone改进 | RepConv、GhostConv优化HGBlock

🚀🚀🚀本文内容:1)RT-DETR原理介绍;2)RepConv、GhostConv优化HGBlock 🚀🚀🚀RT-DETR改进创新专栏:http://t.csdnimg.cn/vuQTz 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; RT-DETR模型创新优化,涨点技巧分享,科研小助手; 1.RT-DETR介绍 论文…

什么叫做云安全?云安全有哪些要求?

云安全(Cloud Security)是一种基于云计算的安全防护策略,旨在保护企业数据和应用程序的安全性和完整性。云安全利用云计算的分布式处理和存储能力,以更高效、更灵活的方式提供安全服务。 云安全的要求主要包括以下几个方面: 数据安全和隐私保…

【中国知名企业高管团队】系列67:华帝Vatti

前两天,华研荟介绍了中国厨房电器领域的领头羊——方太和老板,今天为您介绍另一个专注于厨房电器的公司——华帝Vatti。 一、关于华帝 根据官网介绍: 华帝股份有限公司自1992年创立至今,专注厨电领域,始终以产品创新…

自然语言处理实战项目21-两段文本的查重功能,返回最相似的文本字符串,可应用于文本查重与论文查重

大家好,我是微学AI,今天给大家介绍一下自然语言处理实战项目21-两段文本的查重功能,返回最相似的文本字符串,可应用于论文查重。本文想实现一种文本查重功能,通过输入两段文本,从中找出这两段文本中最相似的句子。这项技术有助于检测抄袭、抄袭的论文和文章,提高知识创新…

【教3妹学编程-算法题】阈值距离内邻居最少的城市

3妹:好冷啊, 冻得瑟瑟发抖啦 2哥 : 立冬之后又开始降温了, 外面风吹的呼呼的。 3妹:今天还有雨,2哥上班记得带伞。 2哥 : 好的 3妹:哼,不喜欢冬天,也不喜欢下雨天,要是我…

从5亿行数据中,筛选出重复次数在1000行的数据行,也爆内存了

点击上方“Python爬虫与数据挖掘”,进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 独在异乡为异客,每逢佳节倍思亲。 大家好,我是皮皮。 一、前言 前几天在Python最强王者交流群【巭孬🕷】问了一个问…

【Linux】Linux基础IO(上)

​ ​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:Linux 🎯长路漫漫浩浩,万事皆有期待 上一篇博客:【Linux】…

嵌入式软件工程师面试题——2025校招社招通用(十三)

说明: 面试题来源于网络书籍,公司题目以及博主原创或修改(题目大部分来源于各种公司);文中很多题目,或许大家直接编译器写完,1分钟就出结果了。但在这里博主希望每一个题目,大家都要…

基于SSM的网络直播带货网站

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

格式化或删除了存储卡的照片?值得收藏的几个有效方法

最好的恢复软件可以从 SD 卡、固态硬盘和硬盘恢复已删除的照片、视频和数据 您是否不小心重新格式化了存储卡或删除了想要保留的照片?最好的照片恢复软件可以提供帮助!如果您使用数码相机拍摄的时间足够长,当您错误地删除了您想要保留的图像…

win下oracle安装与navicat远程连接配置

oracle安装 navicat远程连接配置 1、打开navicat,工具>选项>环境 2、配置 找到oracle安装目录 3、连接

2023亚太杯数学建模A题B题C题思路汇总分析

文章目录 0 赛题思路1 竞赛信息2 竞赛时间3 建模常见问题类型3.1 分类问题3.2 优化问题3.3 预测问题3.4 评价问题 4 建模资料5 最后 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 竞赛信息 2023年第十三…

浅谈如何预防高层小区电气火灾的发生

【摘要】:随着国民经济的发展和人民生活水平的不断提高,我国工业用电和家庭用电量逐年增加。电气火灾造成的人员伤亡和财产损失巨大,时刻威胁着人们的生命及财产安全。众所周知,因供电线路或用电设备的损坏引发的接地电气火灾的例…

数据仓库入门简介

一,数组仓库介绍 数据仓库 (英语:Data Warehouse,简称数仓、DW)是一个为数据分析而设计的企业级数据管理系统。它旨在 支持企业决策过程中的数据分析和业务智能 。数据仓库的基本原理是将不同来源的数据整合到一个中心…

12358748257

问题一:.浮点数打印问题 float red_increment (target_red_value - initial_red_value) / STEPS; u8 STEPS 100; printf("绿色值每一次增量------%f\n", red_increment); 后面三个参数均为u8类型 希望采用 %f打印出每次的步进值。但是结果为空白 希…

CodeEase标准化的低代码平台

目录 一、引言二、网站简介三、网站特色四、为什么推荐这个网站?五、总结 一、引言 随着互联网的快速发展,我们每天都会浏览各种各样的网站。今天,我想向大家推荐一个独特而出色的网站——CodeEase,这是一个致力于为用户提供便捷…

maven安装

1、 maven 历史版本下载地址 https://archive.apache.org/dist/maven/maven-3/ 这里 下载和我一样的版本,3.6.3 解压到/usr/local文件夹即可 配置环境变量 export MAVEN_HOME/maven根路径 export PATH M A V E N H O M E / b i n : MAVEN_HOME/bin: MAVENH​OME…

TrOCR模型微调【基于transformer的光学字符识别】

TrOCR(基于 Transformer 的光学字符识别)模型是性能最佳的 OCR 模型之一。 在我们之前的文章中,我们分析了它们在单行打印和手写文本上的表现。 然而,与任何其他深度学习模型一样,它们也有其局限性。 TrOCR 在处理开箱…

(免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐

摘 要 本论文主要论述了如何使用Django开发一个校园宿舍管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述校园宿舍管理系统的当前背景以及系统开发的目的…