那份岁月的数码宝贝梦是如何让数码暴龙机震动起来的???

引言

那份岁月的数码宝贝梦

回忆童年,仿佛是一段梦幻般的旅程,而在这个梦幻的时光里,数码宝贝是那个璀璨星辰般的存在,照亮了我们每一个瞬间。

小时候,每当放学回家,电视机前的等待仿佛漫长得无法忍受。每一集《数码宝贝》就像一颗颗星星,闪烁着引人入胜的故事。那时,我们跟随着大冒险者太一,和伙伴们一同穿越到数码世界,面对黑暗的力量,挑战强大的敌人。那些激动人心的战斗、深刻的友谊,如今看来已是记忆中的珍珠,散发着迷人的光芒。

不知道你是否还记得数码宝贝在进化时数码暴龙机的震动,每一次震动都是热血沸腾。

没错,本文重点给大家介绍一下如何在游戏开发中,让数码暴龙机震动起来

本文源工程在文末获取,小伙伴们自行前往。

震动效果

震动效果是一种通过模拟物理震动来提供触感反馈的技术。在多种应用领域中,包括游戏、移动设备、虚拟现实等,震动效果被广泛应用以增强用户体验。

在游戏中,震动效果可以通过各种方式来实现,例如在特定事件发生时触发设备的振动,以模拟游戏中的物理交互或强调重要事件。这可以使玩家更深度地融入游戏世界,提高沉浸感。

应用场景

  1. 碰撞和击打反馈: 当2D游戏角色与环境或敌人发生碰撞时,可以通过震动来模拟角色的受击感,使玩家更直观地感受到游戏中的动作。

  2. 技能释放: 在角色释放强大技能或攻击时,通过震动效果可以增强技能释放的威力感,使玩家更有成就感。

  3. 任务完成和奖励: 当玩家完成关卡或达到目标时,使用震动来传达成功和奖励的感觉,增加玩家的满足度和成就感。

  4. 环境互动: 在2D冒险游戏中,当玩家与环境中的交互元素进行互动时,使用震动来反馈玩家的动作,提高互动的感知。

  5. 警告和危险: 同样,可以在2D游戏中使用震动效果来警告玩家可能的危险,使游戏更具紧张感和挑战性。

实例

1.资源准备

想要让数码暴龙机震动起来,我们先去找到一张熟悉的数码暴龙机的图片。

2.拼UI

给暴龙机添加一个ShakeIt脚本。

3.写代码

核心源码如下:

typescript 复制代码
/**
 * ShakeIt函数用于给指定节点添加震动效果。
 *
 * @param {Node} node - 需要添加震动效果的节点。
 * @param {number} duration - 震动的持续时间,单位为秒。
 */
ShakeIt(node: Node, duration: number) {
    // 停止所有当前节点上的Tween动画,以防止动画叠加
    Tween.stopAllByTarget(node);

    // 使用Tween系统创建一个无限循环的震动动画
    tween(node).repeatForever(
        tween(node)
            .to(this.shakeInternal, { position: this.shakeParams[0] })
            .to(this.shakeInternal, { position: this.shakeParams[1] })
            .to(this.shakeInternal, { position: this.shakeParams[2] })
            .to(this.shakeInternal, { position: this.shakeParams[3] })
            .to(this.shakeInternal, { position: this.shakeParams[4] })
            .to(this.shakeInternal, { position: this.shakeParams[5] })
            .to(this.shakeInternal, { position: this.shakeParams[6] })
            .to(this.shakeInternal, { position: this.shakeParams[7] })
            .to(this.shakeInternal, { position: this.shakeParams[8] })
    ).start();

    // 在指定的持续时间后执行一次性的回调函数
    this.unscheduleAllCallbacks();
    this.scheduleOnce(() => {
        // 停止节点上的所有Tween动画,并将节点位置重置为原点
        Tween.stopAllByTarget(node);
        node.setPosition(0, 0, 0);
    }, duration);
}
  1. ShakeIt函数接收两个参数:node表示需要添加震动效果的节点,duration表示震动的持续时间。

  2. Tween.stopAllByTarget(node)用于停止当前节点上所有的Tween动画,以防止动画叠加。

  3. 使用Tween系统创建一个无限循环的震动动画,通过一系列的to方法定义了震动的不同阶段和位置。这里使用了this.shakeParams数组来存储震动的不同阶段的位置信息。

  4. this.unscheduleAllCallbacks()用于取消之前通过scheduleOnce方法设置的所有一次性回调,以确保不会产生冲突。

  5. 通过scheduleOnce方法,在指定的duration时间后执行一次性的回调函数。在回调函数中,停止节点上的所有Tween动画,并将节点位置重置为原点。

4.效果展示

结语

或许,数码宝贝已经离我们远去,但那份璀璨的梦想和勇气,却一直在心中燃烧。童年的数码宝贝梦,如同一颗永不熄灭的星星,照亮了我们前行的路。愿我们永远怀念那段美好的时光,怀揣着数码宝贝的勇气,勇往直前,迎接未来的冒险。

本文源工程 可通过私信 发送ShakeIt获取。

更多实用源码 可通过阅读原文搜索"亿元程序员"获取。

我是"亿元程序员",一位有着8年游戏行业经验的主程。在游戏开发中,希望能给到您帮助, 也希望通过您能帮助到大家。

AD:笔者线上的小游戏《方块掌机经典》《贪吃蛇掌机经典》《重力迷宫球》《填色之旅》大家可以自行点击搜索体验。

实不相瞒,想要个在看 !请把该文章分享给你觉得有需要的其他小伙伴。谢谢!

推荐专栏:

100个Cocos实例

8年主程手把手打造Cocos独立游戏开发框架

和8年游戏主程一起学习设计模式

从零开始开发贪吃蛇小游戏到上线系列

知识付费专栏

相关推荐
范文杰2 小时前
AI 时代如何更高效开发前端组件?21st.dev 给了一种答案
前端·ai编程
拉不动的猪2 小时前
刷刷题50(常见的js数据通信与渲染问题)
前端·javascript·面试
拉不动的猪3 小时前
JS多线程Webworks中的几种实战场景演示
前端·javascript·面试
FreeCultureBoy3 小时前
macOS 命令行 原生挂载 webdav 方法
前端
uhakadotcom4 小时前
Astro 框架:快速构建内容驱动型网站的利器
前端·javascript·面试
uhakadotcom4 小时前
了解Nest.js和Next.js:如何选择合适的框架
前端·javascript·面试
uhakadotcom4 小时前
React与Next.js:基础知识及应用场景
前端·面试·github
uhakadotcom4 小时前
Remix 框架:性能与易用性的完美结合
前端·javascript·面试
uhakadotcom4 小时前
Node.js 包管理器:npm vs pnpm
前端·javascript·面试
LaoZhangAI5 小时前
2025最全GPT-4o图像生成API指南:官方接口配置+15个实用提示词【保姆级教程】
前端