怎样优雅的研究 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 方法中实现的。所以窗体在移动时并不影响功能的使用。这使我们的游戏更加流畅。







原文地址:https://www.cnblogs.com/gccbuaa/p/6774900.html