在 Cocos Creator 里画个炫酷的雷达图

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

前言

🕸️雷达图(Radar Chart) 也称为网络图、星图或蜘蛛网图。

是以从同一点开始的轴上表示的三个或更多个定量变量的二维图表的形式显示多元数据的图形方法。

适用于显示三个或更多的维度的变量。

网上偷的图(侵删)

🕸️雷达图常用于📚数据统计或对比,对于查看哪些变量具有相似的值、变量之间是否有异常值都很有用。

🎮同时在不少游戏中都有雷达图的身影,可以很直观地展示并对比一些数据。

例如王者荣耀中的对战资料中就用到了:

网上偷的图(侵删)

🔎那么在本篇文章中,皮皮就来分享下在 Cocos Creator 中如何利用 Graphics 组件来绘制炫酷的雷达图~

文中会对原始代码进行一定的削减以保证阅读体验。

雷达图组件:https://gitee.com/ifaswind/eazax-ccc/blob/master/components/RadarChart.ts


预览

😲先来看看效果吧~

在线预览:https://ifaswind.gitee.io/eazax-cases/?case=radarChart

😃两条数据

😮缓动数据

😵花里胡哨

😱艺术就是爆炸

😈逐渐偏离主题

🙌 没有人

👐 比我

👌 更懂

☝️ 花里胡哨

(👱川老师直呼内行)


正文

🎭Graphics 组件

在我们正式开始制作雷达图之前,让我们先来大概了解一下 Cocos Creator 引擎中的 Graphics 组件。

Graphics 组件继承于 cc.RenderComponent,利用该组件我们可以实现画板和表格之类的功能。

属性(Properties)

下面是我们本次将会用到的属性:

  • lineCap:设置或返回线条两端的样式(无、圆形线帽或方形线帽)
  • lineJoin:设置或返回两条线相交时的拐角样式(斜角、圆角或尖角)
  • lineWidth:设置或返回当前画笔的粗细(线条的宽度)
  • strokeColor:设置或返回当前画笔的颜色
  • fillColor:设置或返回填充用的颜色(油漆桶)

函数(Functions)

下面是我们本次将会用到的函数:

  • moveTo(x, y):抬起画笔并移动到指定位置(不创建线条)
  • lineTo(x, y):放下画笔并创建一条直线至指定位置
  • circle(cx, cy, r):在指定位置(圆心)画一个圆
  • close():闭合已创建的线条(相当于 lineTo(起点)
  • stroke():绘制已创建(但未被绘制)的线条(将线条想象成默认透明的,此行为则是赋予线条颜色)
  • fill():填充当前线条包围的区域(如果线条没有闭合则会尝试”模拟闭合“起点和终点)
  • clear():擦掉当前画板上的所有东西

Graphics 组件文档:http://docs.cocos.com/creator/manual/zh/components/graphics.html?h=graphics

🎨画网格

捋一捋

先来看看一个标准的雷达图有啥特点:

网上偷的图(侵删)

🔮发现了吗?雷达图的基本特点如下:

  • 有 3 条或以上的轴线
  • 轴与轴之间的夹角相同
  • 每条轴上除中心点外应至少有 1 个刻度
  • 每条轴上都有相同的刻度
  • 刻度与刻度之间的距离也相同
  • 轴之间的刻度相连形成网格线

动手吧

计算轴线角度

先算出轴之间的夹角度数 [ 360 ÷ 轴数 ],再计算所有轴的角度:

this.angles = [];
// 轴间夹角
const iAngle = 360 / this.axes;
for (let i = 0; i < this.axes; i++) {
   
   
    // 计算
    const angle = iAngle * i;
    this.angles.push(angle);
}
计算刻度坐标

雷达图至少拥有 3 条轴,且每条轴上都应有 1 个或以上的刻度(不包含中心点)

所以我们需使用一个二维数组来保存所有刻度的坐标,从最外层(即轴线的末端)的刻度开始记录,方便我们绘制时读取:

// 创建一个二维数组
let scalesSet: cc.Vec2[][] = [];
for (let i = 0; i < 轴上刻度个数; i++) {
   
   
    // 用来保存当前层上的刻度坐标
    let scales = [];
    // 计算刻度在轴上的位置
    const length = 轴线长度 - (轴线长度 / 轴上刻度个数 * i);
    for (let j = 0; j < this.angles.length; j++) {
   
   
        // 将角度转为弧度
        const radian = (Math.PI / 180) * this.angles[j];
        // 根据三角公式计算刻度相对于中心点(0, 0)的坐标
        const pos = cc.v2(length * Math.cos(radian), length * Math.sin(radian));
        // 推进数组
        scales.push(pos);
    }
    // 推进二维数组
    scalesSet.push(scales)
【100个Cocos实例】王者荣耀中雷达的揭秘 在游戏中,雷达是一种常用的图表类型,用于可视化多个数据维度之间的关系。雷达通常呈圆形,类似于雷达屏幕上的扫描线。每个数据维度表示为雷达上的一个轴,而数据值则决定了在该轴上的位置。通过连接这些数据点,可以形成一个多边形,展示不同维度之间的关系。本文源工程可通过私信发送RadarChart获取。我是"亿元程序员",一位有着8年游戏行业经验的主程。在游戏开发中,希望能给到您帮助, 也希望通过您能帮助到大家。AD:笔者线上的小游戏《贪吃蛇掌机经典》《重力迷宫球》《填色之旅》大家可以自行点击搜索体验。 阅读详情

相关推荐

Cocos Creator Mask组件详解:从原理到实战实现刮刮卡效果

形渲染与UI开发中,遮罩(Mask)是一种基础且核心的视觉裁剪技术,它通过定义特定区域来控制子元素的可见性。其底层原理通常基于形渲染管线中的模板测试(Stencil Test),这是一种高效的GPU硬件加速过程,能够精确决定哪些像素应该被渲染。这项技术的核心价值在于,它使得开发者能够灵活地实现各种复杂的局部显示效果,而无需预处理美术资源,极大地提升了开发效率和运行性能。在游戏UI、特效制作和数据可视化等应用场景中,遮罩技术被广泛用于实现诸如圆形头像、滚动视内容限制、技能冷却指示器以及进度条等效果。本

weixin_29847829的博客 355

上传8个cocos creator实用的小插件

上传8个cocos creator实用的小插件,上传8个cocos creator实用的小插件

cocoscreator使用cc.Graphics制作能力雷达

1、cocoscreator制作雷达 2、可自行设置边数 3、预览请移步:https://pan.baidu.com/s/11v096Bbi3PmqbAEL7Uonew#list/path=/我的分享/CSDN/RadarDemo 4、版本creator2.0.8,如有疑问请留言

Cocos Creator插件——Many Widgets助你快速开发

Many Widgets插件旨在帮助开发者快速生成带有特定功能的组件,Shader以及3D模型。 快速生成的组件比如: 快速生成拖尾效果 如何使用Many Widgets插件给节点快速加上幻影拖尾效果 快速生成新手引导 Many Widgets 如何使用Beginner Guide新手引导控件 快速生成2D和3D摇杆 Many Widgets 如何使用2D摇杆Joystick2D控件 Many Widgets 如何使用3D摇杆Joystick3D控件 还可以快速生成

热爱代码 2849

cocos 制作动态生成内容的列表_Excel动态图表

上篇文章完成了婴儿用品的分析报告,主要罗列一些数据透视表和图表来展示分析结果。最近看报告的时候想到一个问题,如果那些图表动起来报告不就更加生动了嘛,所以做了这篇扩展。如何用Excel制作动态图表?可能是领导们更愿意看到的报表形式吧,展示界面动起来,可点击选择,想看哪些内容点击就行了。需要结合excel的表单控件,函数还有图表来共同完成,如下:可以从季度,月份,日期三种维度来看整年的销售情况同步用...

weixin_39918682的博客 387

cocos 制作动态生成内容的列表_EXCEL这样的动态图表,你会做吗?

原创作者: 兰色幻想-赵志东 转自:Excel精英培训前言:今天兰色分享的内容有点多、干货多,同学们要有思想准备哦。动态图表一般有4种制作方法:表单控件 + 公式法ActiveX控件 + 公式法数据透视+切片器法超级表 + 切片器法对于后两种切片器法,适合选择项较少的动态图表,比如下面只有5个选项。而当选择项比较多时,用控件制作动态图表更适合。如下所示:(这也是兰色今天要带大家一起做的图表)上...

weixin_39683598的博客 547

Cocos Creator 雷达(附源码)

前言????️雷达(Radar Chart) 也称为网络、星或蜘蛛网。是以从同一点开始的轴上表示的三个或更多个定量变量的二维图表的形式显示多元数据的形方法。适用于显示三个或更多...

奎特尔星球 1287

cocosCreatorGraphics绘制基础形,五角星,线型,柱形

Grphics绘制五角星、柱形

鹤九日的博客 5457

如何在 Cocos Creator 雷达

前言????️雷达(Radar Chart) 也称为网络、星或蜘蛛网。是以从同一点开始的轴上表示的三个或更多个定量变量的二维图表的形式显示多元数据的形方法。适用于显示三个或更多的维度的变量。网上偷的(侵删)????️雷达常用于????数据统计或对比,对于查看哪些变量具有相似的值、变量之间是否有异常值都很有用。????同时在不少游戏中都有雷达的身影,可以很直观地展示并对比一些数据。例如王者荣耀中的对战资料中...

Cocos的博客 379

java代码实现雷达_雷达的一种实现! Cocos Creator

支持定义任意多个属性值,简单好用!文章底部获取完整代码! 如何使用新建一个节点为节点添加graphics组件添加用户脚本radar调整对应参数 实现原理需求可以转化成如何一个有特点的多边形。先观察一下,雷达的每个属性有什么特点。 可以看到每个属性值,都是在固定虚线上移动。而且每条线的夹角都是一样的。这个夹角就是 360度 除以 总共属性数量。const radians_per = Math.P...

weixin_39980002的博客 2009

雷达的一种实现! Cocos Creator

支持定义任意多个属性值,简单好用!文章底部获取完整代码! 如何使用 新建一个节点 为节点添加graphics组件 添加用户脚本radar 调整对应参数 实现原理 需求可以转化成如何一个有特点的多边形。 先观察一下,雷达的每个属性有什么特点。 可以看到每个属性值,都是在固定虚线上移动。 而且每条线的夹角都是一样的。这个夹角就是 360度 除以 总共属性...

白玉无冰 1446

wxpython绘制雷达_雷达的一种实现! Cocos Creator

支持定义任意多个属性值,简单好用!文章底部获取完整代码!如何使用新建一个节点为节点添加graphics组件添加用户脚本radar调整对应参数实现原理需求可以转化成如何一个有特点的多边形。先观察一下,雷达的每个属性有什么特点。可以看到每个属性值,都是在固定虚线上移动。而且每条线的夹角都是一样的。这个夹角就是 360度 除以 总共属性数量。const radians_per = Math.PI *...

weixin_39825854的博客 304

shader 动之 loading 特效! Cocos Creator !

手把手带你玩转shader动!!文末视频讲解+完整代码。效果预览实现步骤准备阶段由于实现动需要纹理uv的坐标。刚好cocos creator在sprite这个组件中,会传...

白玉无冰 1787

java补间动雷达_雷达的一种实现! Cocos Creator

支持定义任意多个属性值,简单好用!文章底部获取完整代码!如何使用新建一个节点为节点添加graphics组件添加用户脚本radar调整对应参数实现原理需求可以转化成如何一个有特点的多边形。先观察一下,雷达的每个属性有什么特点。可以看到每个属性值,都是在固定虚线上移动。而且每条线的夹角都是一样的。这个夹角就是 360度 除以 总共属性数量。const radians_per = Math.PI *...

weixin_39849239的博客 96

cocos-java实例_cocos-creator-examples

cocos-creator-examplescocos creator 一些使用实例 (刚体挖洞/流体效果/shader/纹理处理)欢迎关注微信公众号 白玉无冰一个简单的广告播放器小游戏(可以点两下支持一下~)cocos creator 2.4.x demodemo01brightness/saturation/constrast(亮度/饱和度/对比度 两种实现方式)demo02多边形裁剪片与g...

weixin_30061949的博客 371

物体随机飞溅运动! Cocos Creator!

大量物体以随机初速度的飞溅运动!文章底部附完整代码!效果预览像火山喷发、烟花等等运动,都是物体随机飞溅运动。这个运动其实是抛物运动。抛物运动也可以看成是匀加速运动。假设一个物体的初速度为...

白玉无冰 709

shader 动之旗子/水纹波浪 !Cocos Creator !

顶点动、正弦、波长、振幅、周期。效果预览使用步骤新建材质 Material , 选择对应的 Effect ,调整参数。在场景中新建一个精灵(Sprite) , SpriteFrame ...

白玉无冰 1571

Cocos Creator Graphics性能优化:解决复杂图表卡顿与内存泄漏

游戏开发和数据可视化领域,矢量形绘制是创建动态UI和自定义图表的核心技术。其原理是通过CPU生成绘制指令并构建网格数据,再由GPU渲染,实现灵活的可视化效果。这项技术的价值在于能够动态生成复杂形,满足实时数据展示和交互需求。然而,在高数据量场景下,不当的使用容易引发性能瓶颈,如CPU指令重构建开销和GPU资源管理压力,导致面卡顿和内存占用过高。特别是在移动端和小游戏平台,内存泄漏问题可能直接导致应用闪退。本文聚焦于Cocos Creator引擎中的Graphics组件,针对**面卡顿**和**内存

weixin_30263277的博客 371
上一篇: 用安卓 WebView 做一个“套壳”应用
下一篇: 开源一个天气小程序:轻松天气
文弱书生陈皮皮
博客等级 码龄9年 164粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值