引言
那份岁月的数码宝贝梦
回忆童年,仿佛是一段梦幻般的旅程,而在这个梦幻的时光里,数码宝贝是那个璀璨星辰般的存在,照亮了我们每一个瞬间。
小时候,每当放学回家,电视机前的等待仿佛漫长得无法忍受。每一集《数码宝贝》就像一颗颗星星,闪烁着引人入胜的故事。那时,我们跟随着大冒险者太一,和伙伴们一同穿越到数码世界,面对黑暗的力量,挑战强大的敌人。那些激动人心的战斗、深刻的友谊,如今看来已是记忆中的珍珠,散发着迷人的光芒。
不知道你是否还记得数码宝贝在进化时数码暴龙机的震动,每一次震动都是热血沸腾。
没错,本文重点给大家介绍一下如何在游戏开发中,让数码暴龙机震动起来。
本文源工程在文末获取,小伙伴们自行前往。
震动效果
震动效果是一种通过模拟物理震动来提供触感反馈的技术。在多种应用领域中,包括游戏、移动设备、虚拟现实等,震动效果被广泛应用以增强用户体验。
在游戏中,震动效果可以通过各种方式来实现,例如在特定事件发生时触发设备的振动,以模拟游戏中的物理交互或强调重要事件。这可以使玩家更深度地融入游戏世界,提高沉浸感。
应用场景
-
碰撞和击打反馈: 当2D游戏角色与环境或敌人发生碰撞时,可以通过震动来模拟角色的受击感,使玩家更直观地感受到游戏中的动作。
-
技能释放: 在角色释放强大技能或攻击时,通过震动效果可以增强技能释放的威力感,使玩家更有成就感。
-
任务完成和奖励: 当玩家完成关卡或达到目标时,使用震动来传达成功和奖励的感觉,增加玩家的满足度和成就感。
-
环境互动: 在2D冒险游戏中,当玩家与环境中的交互元素进行互动时,使用震动来反馈玩家的动作,提高互动的感知。
-
警告和危险: 同样,可以在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);
}
-
ShakeIt
函数接收两个参数:node
表示需要添加震动效果的节点,duration
表示震动的持续时间。 -
Tween.stopAllByTarget(node)
用于停止当前节点上所有的Tween动画,以防止动画叠加。 -
使用Tween系统创建一个无限循环的震动动画,通过一系列的
to
方法定义了震动的不同阶段和位置。这里使用了this.shakeParams
数组来存储震动的不同阶段的位置信息。 -
this.unscheduleAllCallbacks()
用于取消之前通过scheduleOnce
方法设置的所有一次性回调,以确保不会产生冲突。 -
通过
scheduleOnce
方法,在指定的duration
时间后执行一次性的回调函数。在回调函数中,停止节点上的所有Tween动画,并将节点位置重置为原点。
4.效果展示
结语
或许,数码宝贝已经离我们远去,但那份璀璨的梦想和勇气,却一直在心中燃烧。童年的数码宝贝梦,如同一颗永不熄灭的星星,照亮了我们前行的路。愿我们永远怀念那段美好的时光,怀揣着数码宝贝的勇气,勇往直前,迎接未来的冒险。
本文源工程 可通过私信 发送ShakeIt获取。
更多实用源码 可通过阅读原文搜索"亿元程序员"获取。
我是"亿元程序员",一位有着8年游戏行业经验的主程。在游戏开发中,希望能给到您帮助, 也希望通过您能帮助到大家。
AD:笔者线上的小游戏《方块掌机经典》《贪吃蛇掌机经典》《重力迷宫球》《填色之旅》大家可以自行点击搜索体验。
实不相瞒,想要个赞 和在看 !请把该文章分享给你觉得有需要的其他小伙伴。谢谢!
推荐专栏: