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

引言

那份岁月的数码宝贝梦

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

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

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

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

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

震动效果

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

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

应用场景

  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年游戏主程一起学习设计模式

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

知识付费专栏

相关推荐
Mintopia9 分钟前
轻量化AIGC模型在移动端Web应用的适配技术
前端·javascript·aigc
Mintopia9 分钟前
Next.js CI/CD 基础(GitHub Actions)
前端·javascript·next.js
Wiktok1 小时前
pureadmin的动态路由和静态路由
前端·vue3·pureadmin
devii661 小时前
html.
前端
掘金安东尼1 小时前
为什么浏览器要限制 JavaScript 定时器?
前端·javascript·github
学前端搞口饭吃2 小时前
react context如何使用
前端·javascript·react.js
GDAL2 小时前
为什么Cesium不使用vue或者react,而是 保留 Knockout
前端·vue.js·react.js
IT_陈寒2 小时前
《Java 21新特性实战:5个必学的性能优化技巧让你的应用快30%》
前端·人工智能·后端
小谭鸡米花2 小时前
uni小程序中使用Echarts图表
前端·小程序·echarts
芜青2 小时前
【Vue2手录11】Vue脚手架(@vue_cli)详解(环境搭建+项目开发示例)
前端·javascript·vue.js