shiroin 发表于 2024-1-6 23:45 我好像懂了,谢谢大佬 |
本帖最后由 shiroin 于 2024-1-6 23:49 编辑 xuexizhanghao 发表于 2024-1-6 21:08 你使用了两个嵌套的IF-ELSE条件句式,只有玩家位置和18号事件位置重合时,才可能进行第二个IF-ELS句式的判定,这也意味着当玩家离开当前位置,即便你头上顶着气泡,也不会触发消除气泡的脚本 按照你这个写法,只有玩家和事件位置重合,且方向不朝右,才可能触发脚本代码 所以如果你的目的是【玩家离开事件位置时,消除已有的表情气泡】,可以尝试这个事件写法: 玩家进入18号事件位置时,打开特定开关(假设是打开1号开关) 地图上额外放置一个并行事件,只有1号开关打开时才激活,并行事件内容是: 如果:脚本:$gameMap.event(18).x !== $gamePlayer.x || $gameMap.event(18).y !== $gamePlayer.y 脚本:var spriteset = SceneManager._scene._spriteset; if (spriteset) { spriteset._characterSprites.forEach(function(sprite) { if (sprite._character === $gamePlayer) { if (sprite._balloonSprite) { sprite.endBalloon(); } } }); } 开关操作:1号开关 = OFF 通过这个新的并行事件去监听玩家离开事件区域的后续情况,理论上可以防止因为无法触发脚本而没有及时消除表情气泡 |
photo_2024-01-06_23-47-52.jpg (125.17 KB, 下载次数: 32)
shiroin 发表于 2024-1-6 17:05 谢谢 我没安那个,其实说来惭愧我还没搞懂插件 |
xuexizhanghao 发表于 2024-1-6 16:07 因为这个脚本效果是在气泡没有正常完整播放前就开始执行endBalloon()内容,和表情气泡相关的代码或插件有可能会因此产生报错,如果你没有使用和表情气泡有关的插件,应该是不会有什么问题 |
shiroin 发表于 2024-1-4 23:21 请问,这个隐患……指什么 |
xuexizhanghao 发表于 2024-1-4 22:38 "气泡立即消失",这个是RPG maker原生代码没有设计的功能,所以想要实现这个功能,估计要动底层代码了 比如直接遍历找到玩家身上的气泡然后直接执行endBalloon()函数,但有没有隐患我就不清楚了,通常是不建议直接动底层逻辑的,你需要的话可以试试看 直接脚本输入下列代码: var spriteset = SceneManager._scene._spriteset; if (spriteset) { spriteset._characterSprites.forEach(function(sprite) { if (sprite._character === $gamePlayer) { if (sprite._balloonSprite) { sprite.endBalloon(); } } }); } |
xuexizhanghao 发表于 2024-1-3 23:07 你的并行事件没有设置等待时间,每帧都在自动处理你的事件页内容 所以你只能看到一个空的气泡,气泡没有播放完就马上开始从头播放 以及你没有追加事件触发的时机,按你这个写法,就算没有走到指定地点也是会出现气泡的 |
站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作
GMT+8, 2024-11-17 00:53
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.