Project1
标题:
请问:要让窗口坐标移动一定的距离后静止,怎么做?
[打印本页]
作者:
kvkv97
时间:
2021-3-17 23:07
标题:
请问:要让窗口坐标移动一定的距离后静止,怎么做?
请问:要让窗口坐标移动一定的距离后静止,怎么做?
#生成标题窗口
@command_window = Window_Command.new(96,["新游戏","继续","退出"])
@command_window.x = 320 - @command_window.width/2
@command_window.y = 288
loop do
@command_window.y += 10
if @command_window.y == 300
@command_window.y = 300
end
Graphics.update
end
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
我写了上面的程序,结果窗口坐标一直往下移动,没法在300的地方静止下来。
作者:
soulsaga
时间:
2021-3-17 23:16
本帖最后由 soulsaga 于 2021-3-18 01:04 编辑
@command_window.y = 288
一直+10有什么可能会是300
IF用>300才对..
況且就算能到300 300后+10就不符合300了...也会一直往下移
作者:
alexncf125
时间:
2021-3-17 23:19
if @command_window.y
== 300
@command_window.y
= 300
end
你看你这写的什么
loop do 不帶 break 你想 loop 到什么时候
作者:
KB.Driver
时间:
2021-3-18 01:18
y没法刚好等于300,所以就一直+10了
另外,循环也没准备退出条件,会一直卡在这。
初级一点的方法,手动写y增加的逻辑。
window.y = [window.y + 10, 300].min
可以用这个来确保window的y一边增加,又不超过最大值
后面再判断window.y == 300,然后记得要break
推销:
日历的RGSS3入门教程 - 精灵与位图Lv3 精灵更新与状态机
窗口可以看作封装过的精灵,在坐标这个问题上行为是一致的。
高级一点的方法,找一个缓动库(Easer),给Sprite加一个ease方法
最基础的线性移动、还有其他效果,直接交给精灵更新来托管,可以避免在业务代码中写一堆if和加减
作者:
RPGzh500223
时间:
2021-3-18 19:02
用楼主的代码
#生成标题窗口
@command_window = Window_Command.new(96,["新游戏","继续","退出"])
@command_window.x = 320 - @command_window.width/2
@command_window.y = 288
Graphics.transition
loop do
if @command_window.y != 300
@command_window.y += ((300 - @command_window.y)<=>0) *
[Math.sqrt((@command_window.y - 300).abs).to_i, 1].max
end
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
复制代码
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1