在非常多游戏中,窗体能够从游戏画面的边缘弹出。
而在 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 方法中实现的。所以窗体在移动时并不影响功能的使用。这使我们的游戏更加流畅。