【CocosCreator问题总结】MotionStreak效果显示异常

news2024/12/22 18:20:34
  • 📢博客主页:肩匣与橘
  • 📢欢迎点赞 👍 收藏留言 📝 如有错误敬请指正!
  • 📢本文由肩匣与橘编写,首发于CSDN🙉
  • 📢生活依旧是美好而又温柔的,你也是✨ 

Cocos Creator 小科普

  • Cocos Creator是一个基于 Cocos2d-x 引擎的游戏开发工具,可以用于制作2D和3D游戏,也可以用于开发跨平台应用程序。
  • Cocos Creator提供了一系列的工具和编辑器,可以帮助开发者快速地创建游戏场景、设计游戏逻辑、调试游戏性能等。
  • Cocos Creator支持多平台发布,包括WebiOSAndroidWindowsMac等平台,可以帮助开发者快速地发布游戏并将其推向全球市场。
  • Cocos Creator提供了丰富的社区资源和技术支持,可以帮助开发者解决开发过程中遇到的各种问题。

目录

❓问题描述

❔组件原理

❗解决方法

①方法一

②方法二

🆗总结


❓问题描述

       CocosCreator更新到2.4.9后cc.MotionStreak被添加到场景时,总会马上创建一个(0,0)到拖尾所在节点位置的拖尾效果。如图:

❔组件原理

       解决MotionStreak显示错误问题,首先了解一下该组件的原理。在编译阶段,Cocos Creator 将拖尾组件所需的资源文件(如纹理、材质等)打包成一个粒子系统文件,并将其保存到项目中的资源目录中。在运行时,当拖尾组件被添加到游戏对象中时,Cocos Creator 会从资源目录中加载粒子系统文件,并将其实例化成一个粒子系统对象。

       在底层逻辑中,拖尾组件主要是通过创建一系列的粒子来模拟拖尾效果。当游戏对象移动时,拖尾组件会在其路径上创建一系列的粒子,这些粒子会依次连接起来形成拖尾效果。每个粒子都有自己的位置、速度、加速度、生命周期等属性,这些属性会在每一帧中被更新。粒子的位置和方向的计算是基于拖尾节点的位置和方向进行的,因此当拖尾节点移动时,粒子的位置和方向也会相应地更新。

❗解决方法

       在经过查阅后发现问题所在:

       因为在CCMotionStreak插入了这个_lastWPos… 这个lastWPos 会在拖尾组件MotionStreak中被重置为0。

①方法一

       目前官方给予的一个解决方案:

       拖尾组件在添加到场景中的时候就会被激活,激活时的坐标是 00 点,因此 00 点就会做为拖尾的原点。这里只要把position 的赋值放到添加到父节点之前就行。

       旧版本没这个问题,是因为旧版本的拖尾总是延迟一帧。

②方法二

       可以使用以下办法:(一个在不修改源码情况下的解决方案

       在拖尾节点激活时,在执行lastUpdate之前,修改lastWpos为节点的世界坐标。

let motion = this.node.getComponent(cc.MotionStreak);
        if (motion) {

            //修复2.4.9版本拖尾效果从原点开始问题,后续关注引擎修复情况移除

            motion.scheduleOnce(() => {

                motion.reset();

                let mat4 = cc.mat4();

                let matrix = this.node.getWorldMatrix(mat4);

                let tx = matrix.m[12],

                    ty = matrix.m[13];

                //@ts-ignore

                motion._lastWPos.x = tx;

                //@ts-ignore

                motion._lastWPos.y = ty;

            });

        }

       代码块的实现过程为:延迟一帧开始执行,首先删除当前所有的拖尾片段,后将MotionStreak的lastWpos修改为节点的世界坐标。效果演示:

🆗总结

       CocosCreator更新到2.4.9后cc.MotionStreak被添加到场景时,总会马上创建一个(0,0)到拖尾所在节点位置的拖尾效果。拖尾组件在添加到场景中的时候就会被激活,激活时的坐标是 00 点,因此 00 点就会做为拖尾的原点。旧版本没这个问题,是因为旧版本的拖尾总是延迟一帧。解决办法就是在拖尾节点激活时,在执行lastUpdate之前,延时一帧修改lastWpos为节点的世界坐标。

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

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

相关文章

公司新招了一个00后软件测试工程师,上来一顿操作给我看呆了...

前段时间公司新来了个同事,听说大学是学的广告专业,因为喜欢IT行业就找了个培训班,后来在一家小公司干了三年,现在跳槽来我们公司。来了之后把现有项目的性能优化了一遍,服务器缩减一半,性能反而提升4倍!给…

基于微信小程序的医院挂号预约系统

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

react学习2

props基本用法,把属性自动保存到props里 简写:三点展开,展开运算符无法展开对象,但是三点外侧包裹花括号可以复制对象{...P} 对props的属性进行限制 首先需要引入prop-types.js包 之后再去进行限制 props是只读的,只…

Vue之数据代理(getter、setter)

文章目录 前言一、数据代理1.Object.defineProperty()2.数据代理讲解 总结 前言 Object.defineProperty 数据代理 一、数据代理 1.Object.defineProperty() (1)实例对象可以通过Object.defineProperty()方法来添加属性,但是添加的属性默认…

进击的Mini LED:群雄逐“屏”,谁主沉浮

前不久,素有家电产业“风向标”之称的中国家电及消费电子博览会AWE在上海圆满闭幕。作为全球三大顶级家电与消费电子展会之一,每年各家企业都会携各自尖端技术亮剑上海滩,舞台中央的面孔也会逐年有些许不同,而从C位的演变中&#…

基于Spring Boot的秒杀系统设计与实现

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

陌生交友发布动态圈子单聊打招呼群聊app开发

陌生交友发布动态圈子单聊打招呼群聊app开发 功能有,发布圈子,发布动态,查看附近的人,发布活动,实人认证,个人主页,相册查看,单聊,群聊。 即时通讯第三方goeasy接口。 好的&#x…

017+图解C语言中函数栈帧的创建与销毁(VS2022环境)

0.前言 您好,这里是limou3434的一篇个人博文,感兴趣的话您也可以看看我的其他文章。本次我将和您一起学习在C语言中函数栈帧的概念。 1.学习函数栈帧的意义 局部变量是怎么穿创建的?为什么局部变量的值是随机的函数是怎么传参的&#xff1…

满分Spring全家桶笔记:Spring+Spring Boot+Spring Cloud+Spring MVC

最近小编整理了一下一线架构师的Spring全家桶笔记:SpringSpring BootSpring CloudSpring MVC,分享给大家一起学习一下~ 01 Spring Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。Spring框架是由于软件开发的复杂性而创建的。Spring使用的…

nacos+frp穿透实现局域网调用

简介:首先你要有外网服务器。在外网服务器上安装frp服务端。然后在你想要调用的局域网电脑上安装frp客户端 frp下载链接 Releases fatedier/frp GitHub 外网服务器上我用的是docker安装的。你也可以直接下载并启动。这里我就不描述了。 首先我们先创建某个目录…

ESP32 ADC测量电压 arduino

ADC ADCESP32的ADC通道衰减倍数代码实现精度问题 ADC ADC(模拟-数字转换器),首先了解模拟信号和数字信号之间的差异。模拟信号是连续的,可以在其范围内取无限个离散值,例如声音、光线等。 数字信号则是离散的&#xf…

Redis(三)常用配置解析

文章目录 度量单位引入其他配置文件启动时加载模块网路配置GENERAL 通用配置REPLICATION 主从复制相关配置安全配置AOF配置 提示:Redis 6.2.6版本 度量单位 注意:g和gb有区别,不区分大小写,1gb 1GB都是一样的。引入其他配置文件…

Qt编程基础 | 第三章-控件 | 3.3、对话框

一、QDialog 1.1、定义 对话框:在主窗口中操作,有可能触发某一个行为动作,会弹出一个新的对话窗口,解决一个临时性的会话,在对话窗口中执行某一个功能。QDialog可以作为自定义对话框的基类,同时Qt也提供了…

Hadoop部署本地模式

​ 本地模式,即运行在单台机器上。没有分布式的思想,使用的是本地文件系统。使用本地模式主要是用于对MapReduce的程序的逻辑进行调试,确保程序的正确性。由于在本地模式下测试和调试MapReduce程序较为方便,因此,这种模…

java实现大气质量插值图及六项污染物插值图图片导出

软件导出成果图效果 一、技术实现应用背景 大气污染是当今世界面临的一个严重问题。它不仅对人类健康造成了危害,还对环境和生态系统产生了负面影响。在许多地区,大气污染已经成为了日常生活中不可忽视的问题。 虽然大气污染的问题是复杂的,…

关于如何使用 python 下载CSV格式数据

本章节内容节自《python 编程从入门到实践》第十六章,我们将从网络上下载数据,并对数据进行可视化。就可以对其进行分析甚至观察其规律和关联。 学习目标 我们将访问并可视化以下两种常见格式存储的数据: CSV 使用 Python 模块 CSV 来处理以…

测试2年,26岁大龄程序员面试13家公司,拿下25K,差点被面试官KO了···

前言 我大概面试了13家公司,简历包装的是两年半测试经验,因为我的年纪已经是26岁,所以必须进行包装,这也并不是我想欺骗别人,而是现在无论干什么工作都需要有工作经验的,就连找个销售都要有工作经验的&…

Vue绑定class样式与style样式

1,回顾HTML的class属性 答:任何一个HTML标签都能够具有class属性,这个属性可能只有一个值,如class"happs",也有可能存在多个属性值,如class"happs good blue",js的原生DOM针…

STM32开发踩坑——芯片写保护解除

成立这个专栏的目的是,记录自己嵌入式开发遇到的问题,与成功的解决方法,方便自己回顾。 具体参考链接:STM32的Flash写了保护怎么办? 解决方法:在STLink连接目标板的情况下打开程序烧写软件ST-Link Utilit…

低代码开发迎来设备管理新时代:智能制造加速升级

随着智能制造时代的到来,制造业正在经历一场前所未有的变革。在这场变革中,设备管理平台和低代码开发已经成为了制造业的不二利器,帮助企业实现数字化转型,提高生产效率,降低成本,增强竞争力。 一、设备管…