cocos creator | 盯着双11开喵铺里的小人许久,我也写了一个!

2024-02-17 20:10
文章标签 creator cocos 小人 许久

本文主要是介绍cocos creator | 盯着双11开喵铺里的小人许久,我也写了一个!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

打开支付宝,天猫双11合伙人全面开喵铺的活动映入眼帘。点击进去后,我竟然盯着小人走路许久,琢磨着,自己也写个玩玩吧!

在这里插入图片描述

效果预览

先一起看看最终实现效果是怎么样的吧。

在这里插入图片描述

配置环境

cocos creator 2.0.8 (其他版本可能也可以) + typescript

看看如何使用

@property(cc.Prefab)
charaterPrefab: cc.Prefab = null; //角色预制节点onEnable() {for (let index = 0; index < 6; index++) {const node = cc.instantiate(this.charaterPrefab);//初始化 父节点,移动区域(最小x,最大x,最小y,最大y)node.getComponent(charaterItem).init(this.node, -this.node.width * 0.6, this.node.width * 0.6, -this.node.height * 0.1, this.node.height * 0.1);}
}

实现逻辑

先一起看看我们的图片资源。

在这里插入图片描述

我们每个小人都是一张合图,可以看到是3X4的结构,其中第一列是往左的动画,第四列是向右的动画。

因为每个图片的布局规律是一样的,所以没有去生成plist文件。

由于是一张大图,加上有多个角色大图,动画播放的控制也没有使用引擎的动画编辑器。

最终采用的方案是切割大图的 SpriteFrame,使用 setRect 保存为小图 SpriteFrame。因为大图的大小为 96x32,所以每个块的大小为 16x32 。

在这里插入图片描述

并按照上图进行切割编号保存在数组中,切图代码参考:

@property([cc.SpriteFrame])
spriteFrames: cc.SpriteFrame[] = []; //所有大图private _spriteFrames: cc.SpriteFrame[][] = [];//[大图编号][每个小图编号]onLoad() {for (let index = 0; index < this.spriteFrames.length; index++) {const element = this.spriteFrames[index];this._spriteFrames[index] = [];for (let index2 = 0; index2 < 12; index2++) {this._spriteFrames[index][index2] = element.clone();this._spriteFrames[index][index2].setRect(cc.rect(16 * Math.floor(index2 / 3), 32 * (index2 % 3), 16, 32));}}
}

最后模拟向左运动,初始化的时候放在最右边,移动到最右边的时候再重新初始化。核心代码参考如下。

private moveOneStep() {switch (this._dir) {case EnumChararerDir.none: {break;}case EnumChararerDir.left: {this.sp.spriteFrame = this._spriteFrames[this._img_type][[0, 1, 0, 2][this._stpe_count % 4]];this.node.x -= 5;if (this.node.x < this._minX) {this.initDir();return;}break;//...省略其他方向}this._stpe_count++;this.scheduleOnce(() => {this.moveOneStep();}, this._step_st);
}private initDir() {this._dir = Math.floor(2 * Math.random()) + 1;// 1-左 2-右this._step_st = 0.1 + Math.random() * 0.04; // 移动一步的时间this._stpe_count = 0;this._img_type = Math.floor(this._spriteFrames.length * Math.random()); // 随机一个角色this.node.y = this._minY + Math.random() * (this._maxY - this._minY);this.node.x = this._minX + Math.random() * (this._maxX - this._minX);switch (this._dir) {case EnumChararerDir.left: {this.node.x = this._maxX;break;}//...省略其他方向}this.node.opacity = 0;this.scheduleOnce(() => {this.node.opacity = 255;this.moveOneStep();}, 5 * Math.random())
}

小结

小人动画大图切割使用的是 SpriteFrame setRect 。 模拟移动采用的是定时器不停切换图片和改变坐标位置。

如果有更好的想法,欢迎留言分享!


游戏开发小赤佬,也玩python 和 shell。—白玉无冰


源码获取

这篇关于cocos creator | 盯着双11开喵铺里的小人许久,我也写了一个!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/718857

相关文章

QT Creator配置Kit的实现示例

《QTCreator配置Kit的实现示例》本文主要介绍了使用Qt5.12.12与VS2022时,因MSVC编译器版本不匹配及WindowsSDK缺失导致配置错误的问题解决,感兴趣的可以了解一下... 目录0、背景:qt5.12.12+vs2022一、症状:二、原因:(可以跳过,直奔后面的解决方法)三、解决方

Debugging Lua Project created in Cocos Code IDE creates “Waiting for debugger to connect” in Win-7

转自 I Installed Cocos Code IDE and created a new Lua Project. When Debugging the Project(F11) the game window pops up and gives me the message waiting for debugger to connect and then freezes. Also a

在 Qt Creator 中,输入 /** 并按下Enter可以自动生成 Doxygen 风格的注释

在 Qt Creator 中,当你输入 /** 时,确实会自动补全标准的 Doxygen 风格注释。这是因为 Qt Creator 支持 Doxygen 以及类似的文档注释风格,并且提供了代码自动补全功能。 以下是如何在 Qt Creator 中使用和显示这些注释标记的步骤: 1. 自动补全 Doxygen 风格注释 在 Qt Creator 中,你可以这样操作: 在你的代码中,将光标放在

ubuntu下qt编译显示Cannot connect creator comm socket /tmp/qt_temp.xxx/stub-socket的解决办法

Cannot connect creator comm socket /tmp/qt_temp.u14973/stub-socket: No such file or directory   于是查了一下,知道qt不能用gnome-terminal执行,需要使用x-team,于是想到了解决方法: 找到:工具(Tools)->环境(environment)->系统(Sy

王楠首次讲述Cocos Creator背后的故事

Cocos Creator发布至今,得到了许多开发者的支持和喜爱,甚至有小伙伴留言说:幸福来得太突然。水滴石穿,非一日之功。这款工具从诞生到问世究竟经历了怎么样的曲折,未来又会走向何方?这方面,大概没有谁比Cocos Creator制作人王楠更有发言权了。   今天不妨抽出10分钟,听听王楠的讲述,相信或多或少会对你有所启发。   开发Cocos Creator的初衷是什么?   我和几

creator物理引擎 /RPG运动类型 /坦克

1 applyForce/ToCenter(). 这个力怎么计算 (牛顿第二定律F=ma) 2 .linearVelocity()是像素/米 (看源码) 3 why到第四帧才有速度 CocosCreator官方文档物理引擎Demo(physics-example,下载链接:https://github.com/2youyou2/physics-example) ----------------

creator 物理引擎 骨骼动画 TS

物理引擎 cocos论坛 遇到坑: 1 不会发生碰撞:A无Collider碰撞组件. B未添加分组***重要 2 获取质量世界坐标=0? 弄了一天 3 碰撞回调函数不会调用;A 碰撞组件依附的节点下挂的脚本中有实现以下函数 B 开启enableContractListener 4 动态调整反弹力: 找不到函数,官网也找不到。setRestitution() 解决:断点看有哪些value和funct

解决Qt Creator与MSVC不匹配的问题

解决Qt Creator与MSVC不匹配的问题 解决调试环境的缺失问题 首先安装window调试器,点击:下载winsdksetup.exe,然后仅需要选择Debugging Tools这一项,安装调试环境即可。 新建MSVC编译器 新编译器要通过克隆旧的编译器实现。将ABI选为自定义,选择MSVC2017,然后选择正确的bit,就完成了编译的新建。

问题记录之Qt Creator下qDebug中文乱码

前言 环境如下 Windows11Qt5.14.2 + MingWQt Creator 4.11.1 现象如下,调试模式下qDebug输出中文乱码 运行模式下,qDebug输出中文正常显示 解决记录 第一步 升级Qt Creator,由Qt Creator 4.11.1升级为Qt Creator 13.0.2 ,此时效果如下图 第二步 修改windows语言设置 设置 -->

【第一章】Cocos Creator 3.8

一、Cocos Creator 介绍 Cocos Creator 既是一款高效、轻量、免费开源的跨平台 2D&3D 图形引擎,也是一个实时 2D&3D 数字内容创作平台。拥有 高性能、低功耗、流式加载、跨平台 等诸多优点,您可以用它来创作 游戏、车机、XR、元宇宙 等领域的项目。 二、主要学习方向 1、场景制作 2、资源系统 3、脚本指南及事件系统 4、发布跨平台游戏 5、图形渲染 6、2D