Cocos creator(2d) 使用 shader + uv 实现单张图片衔接滚动效果

在游戏中,当我们需要让背景图片无缝衔接无限滚动时(打飞机这种背景一直滚动,或者肉鸽游戏地图一直在走等等),通常的做法是 在游戏中放两个背景node,在update中控制这两张背景图片的移动,并让其收尾衔接即可。(具体代码忽略)

可是在肉鸽类游戏中,玩家的走向是全方位的,且无限制的,如果采用图片衔接的方式来实现无限地图全方位滚动,也可以,就是比较麻烦。

经与cocos技术专家98k交流,他提出用shader来滚动uv,达到背景图片移动的效果。而且在3d项目中比较好实现。

但是2d项目怎么办?

经过尝试,得出的方案如下:

1、在assets下创建Effect,命名为:sprite_scroll

2、创建Matrial:  sprite_scroll,并将其Effect选中sprite_scroll。

 3、打开sprite_scroll.effect,并将fs过程修改为如下:

CCProgram fs %{precision highp float;#include <alpha-test>#include <texture>#include <cc-global>in vec4 v_color;#if USE_TEXTUREin vec2 v_uv0;uniform sampler2D texture;#endifvoid main () {float time = mod(cc_time.x, 10.0);float speed = 0.1;float offsetY = fract(time * speed);vec2 curUv = v_uv0 + vec2(0.0, offsetY);vec2 othUv = v_uv0 + vec2(0.0, offsetY - 1.0);// 偏移图片vec4 cur = texture2D(texture, curUv);vec4 oth = texture2D(texture, othUv);gl_FragColor = oth + cur;}
}%

4、在场景中,添加图片,并将 材质sprite_scroll 挂到图片上,如下

 大功告成,运行起来看看效果,gif动图就不制作了,

瑕疵:这个logo图片顶部衔接时,有黑色色块,换一张图片试试看 :

凑合能用,后续正式应用时再研究优化方案了  ^_^

 

 注:creator版本:2.4.3,不同版本的shader脚本不一样,我觉得原理应该差不多。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

奥威BI系统|秒分析,更适合分析大数据

根据以往的经验&#xff0c;当数据量多到一定程度就容易导致系统卡顿、崩溃。这种现象给企业级数据分析造成了极大的困扰。随着业务发展扩大和分析需求精细化&#xff0c;企业需要一套能秒分析大数据的系统。而奥威BI系统就是这样一款可以秒分析大数据的商业智能系统。 奥威BI…

MybatisPlus-CRUD,不带条件构造器的常用方法

mapper层 Repository public interface UserMapper extends BaseMapper<User> BaseMapper中封装好了增删改查的方法 后面直接调用就好了 测试类 SpringBootTest public class CrudTest {Autowiredprivate UserMapper userMapper;//新增Testpublic void insert(){//没…

考研408 | 【计算机网络】概述

计算机网络体系结构 计算机网络概述&#xff1a;1.概念&#xff0c;组成&#xff0c;功能&#xff0c;分类2.标准化工作及相关组织3.性能指标体系结构&参考模型&#xff1a;1.分层结构2.协议&#xff0c;接口&#xff0c;服务3.ISO/OSI模型4.TCP/IP模型 目录 计算机网络体…

外卖多门店小程序开源版开发

外卖多门店小程序开源版开发 外卖多门店小程序开源版的开发可以按照以下步骤进行&#xff1a; 确定需求&#xff1a;明确外卖多门店小程序的功能和特点&#xff0c;包括用户注册登录、浏览菜单、下单支付、订单管理等。技术选型&#xff1a;选择适合开发小程序的技术框架&…

Pytorch学习笔记 | GAN生成对抗网络 | 代码 | 生成数据 | 演变规律可视化

文章目录 用GAN网络生成1010格式规律的数据测试判别器代码效果首次实现生成对抗网络GAN代码结果用GAN网络生成1010格式规律的数据 测试判别器 代码 # 用GAN网络生成1010格式规律的数据import torch import torch.nn as nn # nn全称是neural network,用于构建神经网络模型的…

MySQL常用操作

1. 对某字段进行修改&#xff08;修改字段类型、类型长度、默认值、注释&#xff09; -- 对某字段进行修改&#xff08;修改字段类型、类型长度、默认值、注释&#xff09;&#xff08;COLUMN关键字可以省略不写&#xff09; ALTER TABLE 表名 MODIFY [COLUMN] 字段名 新数据…

二维网格划分 LRU缓存设计

背景 有大量的二维矩形需要存储查看点在哪些矩形中给定一个矩形 查看与哪些矩阵相交项目背景与图形图像基本无关&#xff0c;只涉及大文件分块读取&#xff0c;所以不用实现游戏行业中的物理引擎 设计思路 使用空间划分算法&#xff1a;二维栅格将整个空间划分为多个小区域。…

七、Spring 面向切面编程(AOP)学习总结

文章目录 一、初识面向切面编程&#xff08;AOP&#xff09;1.1 什么是 AOP1.2 AOP的应用场景1.3 Aop 在 Spring 中的作用1.3.1 Aop 的核心概念 1.4 使用 Spring 实现 AOP1.4.1 方式一&#xff1a;使用 Spring API 接口实现 AOP 【主要是SpringAPI接口实现】1.4.2 方式二&#…

4-golang爬虫下载的代码

golang爬虫下载的代码&#xff1a; 下载程序的借鉴内容&#xff1a; 这个是关于gbk&#xff0c;utf8等相互转换的包 github.com/axgle/mahonia" 一、标准下载代码 package downloaderimport ("log""net/http""io""github.com/axgle/…

掌握主动权:职场中如何主动寻找并拓宽工作领域

引言 在现代职场的竞争环境中&#xff0c;主动性是一种重要的优势。对于企业而言&#xff0c;员工的主动性是其成功的关键因素之一。而对于个人职业发展来说&#xff0c;主动性能帮助我们把握更多的机会&#xff0c;提升我们的职业能力。因此&#xff0c;学会在职场中主动寻找…

mybatisJava对象、list和json转换

1. 参考mybatis-plus mybatis Java对象、list和json转换 网上好多不靠谱&#xff0c;参考mybatis-plus中TableField&#xff0c;mybatis中自定义实现 这样不需要对象中属性字符串接收&#xff0c;保存到表中&#xff0c;都是转义字符&#xff0c;使用时还要手动转换为对象或者…

车载总线系列——J1939三

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 没有人关注你。也无需有人关注你。你必须承认自己的价值&#xff0c;你不能站在他人的角度来反对自己。人…

Golang之路---04 并发编程——信道/通道

信道/通道 如果说 goroutine 是 Go语言程序的并发体的话&#xff0c;那么 channel&#xff08;信道&#xff09; 就是 它们之间的通信机制。channel&#xff0c;是一个可以让一个 goroutine 与另一个 goroutine 传输信息的通道&#xff0c;我把他叫做信道&#xff0c;也有人将…

PLC4X踩坑记录

plc4x引起的oom 使用Jprofiler查看dump文件 由上可以看出有大量的NioEventLoop对象没有释放 PlcConnection#close 设备断连重连后导致的oom&#xff0c;看源码close方法主要是channel通道关闭。 修改NettyChannelFactory源码 plc4x设计思想是一个设备一个连接&#xff0c;…

k8s ingress获取客户端客户端真实IP

背景 在Kubernetes中&#xff0c;获取客户端真实IP地址是一个常见需求。这是因为在负载均衡架构中&#xff0c;原始请求的源IP地址会被替换成负载均衡器的IP地址。 获取客户端真实IP的需求背景包括以下几点&#xff1a; 安全性&#xff1a;基于客户端IP进行访问控制和认证授…

信息学奥赛一本通——1155:回文三位数

文章目录 题目【题目描述】【输入】【输出】【输入样例】【输出样例】 AC代码 题目 【题目描述】 如果一个数从左边读和从右边读都是同一个数&#xff0c;就称为回文数。例如 6886 6886 6886就是一个回文数&#xff0c;求出所有的既是回文数又是素数的三位数。 【输入】 (无…

PyTorch中nn-XXX与F-XXX的区别

nn.XXX与F.XXX PyTorch中torch.nn**&#xff08;以下简写为nn&#xff09;中的模块和torch.nn.functional&#xff08;以下简写为F&#xff09;**中的模块都提供了常用的神经网络操作&#xff0c;包括激活函数、损失函数、池化操作等。它们的主要区别如下&#xff1a; nn中的…

工厂模式(C++)

定义 定义一个用于创建对象的接口&#xff0c;让子类决定实例化哪一个类。Factory Method使得一个类的实例化延迟(目的:解耦&#xff0c;手段:虚函数)到子类。 应用场景 在软件系统中&#xff0c;经常面临着创建对象的工作;由于需求的变化&#xff0c;需要创建的对象的具体类…

Spring Boot、Spring Cloud、Spring Alibaba 版本对照关系及稳定兼容版本

Spring Boot、Spring Cloud、Spring Alibaba 版本对照关系及稳定兼容版本 引言 在 Java 生态系统中&#xff0c;Spring Boot、Spring Cloud 和 Spring Alibaba 是非常流行的框架&#xff0c;它们提供了丰富的功能和优雅的解决方案。然而&#xff0c;随着不断的发展和更新&…

Ubuntu中解/压缩命令

一、zip文件 #解压 unzip filename.zip #压缩 zip filename.zip dirname # 递归处理&#xff0c;将指定目录下的所有文件和子目录一并压缩 zip -r filename.zip dirname 二、tar文件 # 解压 tar xvf FileName.tar # 压缩&#xff0c;将DirName和其下所有文件(夹)打包非压…