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

引言

那份岁月的数码宝贝梦

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

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

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

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

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

震动效果

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

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

应用场景

  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 分钟前
【Linux】详解shell代码实现(上)
linux·运维·服务器·前端·chrome·算法·1024程序员节
琴~~17 分钟前
ant-design-vue中table某一列进行合并
前端·javascript·vue.js
sunly_1 小时前
Flutter:flutter_screenutil屏幕适配
前端·javascript·flutter
俸涛努力学前端1 小时前
ajax (一)
开发语言·前端·javascript·笔记·ajax
凌虚(失业了求个工作)2 小时前
Web 端语音对话 AI 示例:使用 Whisper 和 llama.cpp 构建语音聊天机器人
前端·人工智能·python·whisper·llama
信息化未来2 小时前
odoo17 档案管理之翻译2
java·服务器·前端
川石课堂软件测试2 小时前
UI自动化测试|web端元素获取&元素等待实践
开发语言·前端·功能测试·算法·ui
糯米w2 小时前
【前端】excel文件对比
前端·javascript·excel
Ace_31750887762 小时前
微店商品详情接口技术实现详解及代码示例
前端
南城巷陌2 小时前
node.js中实现router模块化管理
前端·javascript·node.js·express.router