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

相关文章

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

如何五分钟使用 Cocos Creator 快速部署 TON 游戏(第一部分)

TON 生态在游戏赛道的火热,吸引了大量的开发者涌入其中,但从技术角度看,EVM 兼容性以及开发语言等方面的问题,基于 TON 底层建立游戏应用对于很多开发者而言仍旧存在较高的门槛。而 Zypher Network 作为目前最先进的区块链游戏开发引擎,支持将 Web2 游戏拓展为 dApp ,开发了大量插件,支持开发者基于 CocosCreator 开发的游戏能够快速部署在 Telegram 生态