| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> [学习笔记]cocos creator 3.0,实现飞行射击游戏的激光鞭(一) -> 正文阅读 |
|
[游戏开发][学习笔记]cocos creator 3.0,实现飞行射击游戏的激光鞭(一) |
? ? ? 最近在做个飞行射击游戏当练手,顺便熟悉一下ccc3.0的开发流程,大多数飞行射击游戏都有激光炮这种子弹,但看了一些教程,实现效果都是与屏幕方向平行,没有弧度的激光,实现后发现效果没达到自己预期,于是看到了下图这种激光效果(我称为激光鞭),觉得很酷炫,想要着手实现。 ? ? ? ? 前期调研了一些资料,本来计划使用Graphic组件+shader实现,但因为没有shader基础,放弃了,后来经过cocos论坛的大神指导,尝试使用Line组件来实现这个效果。 ? ? ? ? 肯定有效果更好的实现方式,还望大佬能够继续指点。 一、Line组件的设置???????? ? ?新建一个空Node,添加一个Line组件。 ?参数说明: Texture:Line组件的贴图,传一个横向的激光贴图即可。 WorldSpace:后续Line组件每个拐点的坐标是否基于世界坐标,因为我其他类型子弹的坐标都是基于世界坐标计算的,所以这个部分也给勾上了。 Positions:拐点的数量,拐点越多,最终激光编的效果会越平滑,我先设置为5个,看一下大致效果。 Widh:激光鞭的宽度 Tile:贴图平铺设置,我设置为:1,1,设置成不同值会有什么效果,自行尝试即可。 Offset:偏移量,没明白啥意思,先放着不管了 color:默认的白色即可。 然后会看到以下效果: 看来基本有雏形了,应该可以大致模拟我们想要的效果了。 二、Camera设置? ? ? ? ?之所以需要设置Camera,是因为:1、我做的是2D游戏。2、一个相机无法同时渲染显示Line组件和Canvas等2D组件(即便在Line组件上加上UIMeshRenderer也没用)。 ? ? ? ? 所以需要单独使用一个Camera单独照这个Line组件,首先在Layer的Edit中增加一个Layer:Laser_Bullet,之后把Line组件的Layer设置为:Laser_Bullet。 ? ? ? ? 之后开始设置Camera的参数: ?部分参数说明: Priority:渲染优先级,我把两个camera的优先级都设置为0,如果激光鞭的camera的优先级比画布的优先级数字小的话,可能会被后渲染的画布给覆盖掉。 Visibility:把之前添加的Laser_Bullet给勾上就可以了,因为我们只需要他显示激光鞭。 Projection:选择正交 OrthoHeight:480和另一个Camera保持一致 ? ? ? ? 看一下效果,可以显示出来了: ?三、通过代码动态设置Line组件? ? ? ? ? 接下来需要实现如果通过代码设置Line组件的拐点坐标,先声明一个Vec3类型的数组,把各个拐点坐标设置一下:
? ? ? ? 在start()中将坐标数组初始化,并复制给Line组件:
? ? ? ? ?在update()中,尝试让它动起来:
? ? ? ? 看看效果: ? ? ? ? ?效果好像还行,接下来就可以实现激光鞭的运行逻辑和碰撞逻辑了。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/15 15:00:20- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |