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

引言

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

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

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

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

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

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

我们接着来看。

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

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

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

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

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

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

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

1.环境

引擎版本:Cocos Creator 3.8.1

编程语言:TypeScript

2.资源准备

首先在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中不断根据上面计算出来的方向和位置通过setRotationFromEuler和setPosition更新对应指示器的显示。

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

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

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

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

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

4.效果演示

原地放技能。

指向性技能。

扇形范围技能。

局部选择技能。

取消释放技能。

结语

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

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

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

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

推荐专栏:

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

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

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

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

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

相关推荐
迅猛龙办公室1 小时前
Python输出当前计算机的系统日期和时间
开发语言·前端·python
小狼154542 小时前
浏览器扩展脚本为什么有时候不生效:注入时机、iframe 和单页路由,多多开票助手
前端·chrome
じòぴé南冸じょうげん2 小时前
油猴脚本突然发现变成灰色了,无法使用?页面不生效?刷新页面没反应?
前端
Csvn4 小时前
组合式 API(Composition API)
前端
火柴就是我5 小时前
Android 打包报错 25.0.3
android·前端
BD_Marathon5 小时前
消息对象中字段的说明
java·前端·python
八荒启·交互动画5 小时前
Web特效025—用 Canvas 2D 做Web特效的定义与边界:这支画笔能做到哪一步
前端·webgl·网页特效·八荒启-交互动画·八荒启
Ai-_Man5 小时前
您您这可以把Dola的多个会话比如说。左侧的多个会话一次性导出吗?不是单条会话里面的多次会对话。用AI导出鸭,答案是可以的
开发语言·前端·人工智能·小程序
excel5 小时前
Nuxt 中使用 useHead 优化 SEO 与 GEO
前端
IT_陈寒6 小时前
SpringBoot启动慢得像蜗牛?原来是这个配置在捣鬼
前端·人工智能·后端