[又撞了]动态光标移动
写完之后,发现有人发过了(又撞上了),反正没什么技术含量,就没署名地扔了上来#==============================================================================# ■ Rect#------------------------------------------------------------------------------# 矩形类#==============================================================================# 移动帧数,自己改Cursor_Rect_Move = 10class Rect# 设置alias old_set set unless Rect.method_defined? "old_set"def set(x,y,w,h,de=false) if @target_rect.is_a?(Rect) return if @target_rect == Rect.new(x,y,w,h) end if de @cursor_rect_move = Cursor_Rect_Move @target_rect = Rect.new(x,y,w,h) else self.old_set(x,y,w,h) endend# 刷新def update return unless @target_rect and @cursor_rect_move return if @cursor_rect_moveself.top_row + (self.page_row_max - 1) # 从当前行向末尾滚动 self.top_row = row - (self.page_row_max - 1) end # 计算光标的宽 cursor_width = self.width / @column_max - 32 # 计算光标坐标 x = @index % @column_max * (cursor_width + 32) y = @index / @column_max * 32 - self.oy # 更新国标矩形 self.cursor_rect.set(x, y, cursor_width, 32,true)endend#==============================================================================# ■ Window_Message#------------------------------------------------------------------------------# 显示文章的信息窗口。#==============================================================================class Window_Message < Window_Selectable#--------------------------------------------------------------------------# ● 刷新光标矩形#--------------------------------------------------------------------------def update_cursor_rect if @index >= 0 n = $game_temp.choice_start + @index self.cursor_rect.set(8, n * 32, @cursor_width, 32,true) else self.cursor_rect.empty endendend复制代码脚本开头的Cursor_Rect_Move = 10自己可以改,这个就是要多少帧移动到目的地。不过一定请注意下面的事情——
最后的class Window_Message < Window_Selectable#--------------------------------------------------------------------------# ● 刷新光标矩形#--------------------------------------------------------------------------def update_cursor_rect if @index >= 0 n = $game_temp.choice_start + @index self.cursor_rect.set(8, n * 32, @cursor_width, 32,true) else self.cursor_rect.empty endendend复制代码是事件中的选择项,如果您想使用本脚本,并且用了什么对话框加强的脚本而发生冲突的情况,可以:
1.直接删掉引用的那一段,不过对话框选择就没有动态的效果了
2.在对话框加强的脚本中搜索"self.cursor_rect.set(",找到之后把最后的 ")" 改为 ",true)"即加一个参数"true"
另:本脚本适合所有拥有选择光标的窗口(因为直接修改Rect,很暴力....), 以上脚本插在Main前
本帖来自P1论坛作者沙漠点灰,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=176577若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
页:
[1]