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







  • 相关阅读:
    ASP.NET Core API ---状态码
    ASP.NET Core ---日志
    UnitOfWork知多少 【转】
    ASP.NET Core 2.1 源码学习之 Options[3]:IOptionsMonitor 【转】
    ASP.NET Core 2.1 源码学习之 Options[2]:IOptions 【转】
    ASP.NET Core 2.1 源码学习之 Options[1]:Configure 【转】
    深入理解net core中的依赖注入、Singleton、Scoped、Transient(四)【转】
    sonarqube插件开发(三) 调试插件
    sonarqube插件开发(二) 开发插件
    sonarqube插件开发(一) 环境搭建
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/6774900.html
Copyright © 2020-2023  润新知