GMS2中如何实现点击鼠标后切换cursor_sprite并添加0.25秒延迟?
GameMaker 点击切换光标并保持0.25秒实现方案
方案1:步事件内置计时器实现(无需额外事件)
修改后创建事件代码
/// @description 初始化光标参数 cursor_sprite = spr_cursor; default_cursor = spr_cursor; // 存储默认光标资源 cursor_hold_timer = 0; // 特殊光标保持计时器,单位为帧
修改后步事件代码
/// @description 处理光标切换与计时 // 计时器倒计时逻辑 if (cursor_hold_timer > 0) { cursor_hold_timer--; // 计时结束切回默认光标 if (cursor_hold_timer == 0) { cursor_sprite = default_cursor; } } // 鼠标点击检测 if mouse_check_button_pressed(mb_left) { cursor_sprite = spr_cursor2; // 设置0.25秒的保持时长,room_speed为当前房间每秒帧数 cursor_hold_timer = floor(room_speed * 0.25); }
适配可变帧率提示:如果你的项目开启了可变帧率,可将
cursor_hold_timer单位改为微秒,创建事件初始值仍为0,点击时赋值为250000(0.25秒=250000微秒),步事件倒计时逻辑改为cursor_hold_timer -= delta_time即可。
方案2:闹钟(Alarm)事件实现(逻辑更简洁)
1. 创建事件代码
/// @description 初始化光标参数 cursor_sprite = spr_cursor;
2. 步事件代码
/// @description 检测鼠标点击切换光标 if mouse_check_button_pressed(mb_left) { cursor_sprite = spr_cursor2; // 给0号闹钟设置0.25秒后触发 alarm[0] = floor(room_speed * 0.25); }
3. 新增Alarm 0事件代码
/// @description 计时结束切回默认光标 cursor_sprite = spr_cursor;
内容的提问来源于stack exchange,提问作者Hex
相关产品推荐
相关产品推荐

