如何为脚本添加延迟?实现动画播放完成后切换至另一动画
实现动画播放完成后延迟切换的解决方案
因为游戏的绘制循环(比如draw函数)是持续执行的,不能用阻塞式延迟(会导致画面卡顿),推荐用非阻塞式计时器来实现等待逻辑,具体修改如下:
步骤1:定义全局状态变量
先在代码的全局区域(或玩家对象的属性里)添加几个变量,用来跟踪动画状态和时间:
let isAttacking = false; // 标记是否正在播放攻击动画 let attackStartTime = 0; // 记录动画开始的时间 const ATTACK_DURATION = 1000; // 动画持续时长,单位毫秒(1000=1秒,500=0.5秒)
步骤2:修改按键触发与动画切换逻辑
替换你原有的按键判断代码,加入计时器判断:
// 按下空格且不在攻击状态时,触发攻击动画 if (keyWentDown("space") && !isAttacking) { player.setAnimation("attack"); player.x += 0.001; isAttacking = true; attackStartTime = millis(); // 用p5.js的millis()获取当前运行毫秒数,其他库可换Date.now() } // 检查攻击动画是否达到设定时长,到点后切换回原动画 if (isAttacking && millis() - attackStartTime >= ATTACK_DURATION) { isAttacking = false; player.setAnimation("idle"); // 这里替换成你要切换的目标动画,比如待机动画 } drawSprites();
关键点说明
isAttacking用来防止重复触发攻击动画,避免多次按下空格导致计时器混乱- 如果你的游戏库不是p5.play,把
millis()换成Date.now()即可,二者都是返回当前时间的毫秒数 - 调整
ATTACK_DURATION的值就能切换0.5秒或1秒的延迟时长
内容的提问来源于stack exchange,提问作者EmberJack18
相关产品推荐
相关产品推荐

