Project1
标题:
这货绝对不是教程——关于场景中的窗口精灵移动
[打印本页]
作者:
退屈£无聊
时间:
2011-7-2 15:30
标题:
这货绝对不是教程——关于场景中的窗口精灵移动
本帖最后由 退屈£无聊 于 2011-7-2 15:32 编辑
适用人群
只是想给一些系统性脚本加一点微华丽(华丽你大头)的效果的人
提供思路
2
[line]1[/line]
方法一:
在一个方法中(方法可自选,基本上是在update里=-=)加入如下语句:
if xxx.x <= xxx
loop do
xxx.x += 2
Graphics.update
break if xxx.x > xxx
end
end
复制代码
嘛。。可能有点难以理解,稍微给个范例好了。
=begin
if @window.x <= 50 # 当@window的X值小于等于50的情况下。这里的x可以换成@window中可以更改的属性中的一个如opacity
loop do # 循环
@window.x += 2 # @window的X值+2
Graphics.update # 画面更新
break if @window.x > 50 # 如果@window的X值大于50就结束循环
end
end
=end
复制代码
这一种方法是比较普遍的方法。不过有一点缺点。在某一个窗口或精灵移动时。其他操作全部中断。
[line]1[/line]
第二种:设置比较麻烦。为了防止误伤某脚本,这里采取重命名的方法做介绍(当然你在实际操作中可以直接写。
class ABC
alias old_ini initialize
def initialize
@begin = 0
old_ini
end
alias old_up update
def update
case @begin
when 0
@window.x += 1
@begin = 1 if @window.x > 50
when 1
@window.opacity -= 10
@begin = 2 if @window.opacity <= 0
end
old_up
end
end
复制代码
这个方法的唯一好处就是,可以让窗口或精灵的变更与其他操作同时进行。但是设置比较烦琐。
大概这里就提供了这么两种方法。希望各位能提供更多的思路,谢谢。
作者:
summer92
时间:
2011-7-2 15:47
不知道那些正规游戏中的移动效果是不是这么判断,某个精灵是否到达了某个点,没到的话继续移动,看似有更高效的方法。。。。帮顶
作者:
f26401004
时间:
2011-8-20 18:32
本帖最后由 f26401004 于 2012-1-14 18:08 编辑
不過窗口的移動應該可以減化成:
if @status_window.x != 20
@status_window.x += 4
end
但這樣子加數必須為20的因數才行......
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1