首页 > 代码库 > 如何优雅的研究 RGSS3 (四) 使窗口从画面边缘弹出
如何优雅的研究 RGSS3 (四) 使窗口从画面边缘弹出
在很多游戏中,窗口可以从游戏画面的边缘弹出。
而在 RGSS3 的默认脚本中时没有这种功能的,当在地图上按下取消键时,游戏菜单会突然出现。
现在我们可以为主菜单添加动画效果,使其在屏幕边缘弹出。
我们知道游戏中的画面并不是真正的在动,而是在每一帧都绘制一幅新的画面。
每一帧都对画面做一些微小的改变,在玩家的眼里就会产生画面在运动的错觉。
复杂的运动效果涉及到复杂的公式,这里我们只采用最简单的匀速直线运动。
我们为主菜单中的三个窗口添加匀速直线的运动规律,使其从画面的边缘移动到目标位置。
@command_window.x = -Graphics.width @gold_window.y = Graphics.height @status_window.x = Graphics.width
要做到这一点,首先要把窗口的初始化坐标设在画面之外。
我们把指令窗口的起始位置设在屏幕左侧,状态窗口设在屏幕右侧,金币窗口设在屏幕下侧。
由于系统在每一帧执行一次 update ,因此使窗口移动的代码既可以设置在窗口类的 update 方法中,也可以设置在场景类的 update 方法中。
考虑到我们只需要将主菜单场景的窗口移动起来,而且为了定位坐标更加便利,所以将移动部分的代码写在 Scene_Menu 中。
在 Scene_Menu 中重写一下 update 方法。
def update super end只要将运动公式添加到这个方法中就能实现移动效果了。
if @command_window.x < -20 @command_window.x += 20 else @command_window.x = 0 end if @status_window.x > 20 @status_window.x -= 20 else @status_window.x = 0 end if @gold_window.y > Graphics.height - @gold_window.height + 2 @gold_window.y -= 2 else @gold_window.y = Graphics.height - @gold_window.height end在我的设置中,让指令窗口与状态窗口每一帧移动20像素从屏幕左右侧移动到指定位置,让金币窗口每一帧移动2像素从屏幕下侧出现。
此时进入游戏打开菜单就可以观察到窗口的动画效果。
另外,因为我们的运动代码是在场景类的 update 方法中实现的,所以窗口在移动时并不影响功能的使用,这使我们的游戏更加流畅。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。