查看: 2451|回复: 2

[已经解决] Y坐标滚动

[复制链接]
梦石
0
星屑
3850
在线时间
1899 小时
注册时间
2010-6-19
回帖
917
发表于 2022-6-5 10:29:52 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
下面这个显示回合制的脚本,每回合数字都会滚动,目前是X坐标的滚动,如何改成Y坐标滚动~

[pre lang="ruby"]#==============================================================================
# 本脚本由ikki0531 转载于www.66RPG.com,使用和转载请保留此信息
#==============================================================================
#==============================================================================
# ■ ターンの表示(ver 0.98)
#==============================================================================

#==============================================================================
# □ 自定义内容
#==============================================================================
module PLAN_TURN
  TURN_STR    = "第{turn}回合"                     # 回合的显示文字({turn}中有回合数)
  STR_COLOR   = Color.new(255, 0, 0)               # 文字颜色
  FRAME_COLOR = Color.new(0, 0, 0)                 # 边缘颜色
  FONT_NAME   = ["汉仪行楷简","黑体","楷体","宋体"]# 格式导出文件时,将会显示此对话框
  FONT_SIZE   =  92                                # 字体大小
  FONT_BOLD   = false                              # 太字
  FONT_ITALIC = false                              # 斜体
  CENTER_WAIT =  30                                # 中心权重
  STR_SPEED   =  64                                # 文字流动速度
  KEY_WAIT    = false                              # 回合显示中的按键输入
  TURN_STR_Z  = 100                                # Z 座標(100中敌人与窗口之间)
  RETURN      = true                               # 把掉头的文字放回流动的方向
end
#==============================================================================
# ■ Scene_Battle
#------------------------------------------------------------------------------
#  处理战斗画面的类。
#==============================================================================

class Scene_Battle
  #--------------------------------------------------------------------------
  # ● 主处理
  #--------------------------------------------------------------------------
  alias plan_turn_main main
  def main
    # 创建精灵
    @turn_sprite = Sprite.new
    @turn_sprite.bitmap = Bitmap.new(32, 32)
    @turn_sprite.z = PLAN_TURN::TURN_STR_Z
   
    # 临时放置在看不见的位置
    center_x = 640 / 2 - @turn_sprite.bitmap.width / 2
    @turn_out = -(640 / PLAN_TURN::STR_SPEED)
    @turn_sprite_pos = @turn_out
    @turn_sprite.x = 640
    @turn_wait = 0
    # 还原为原始方法
    plan_turn_main
    # 释放原始精灵
    @turn_sprite.dispose
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面
  #--------------------------------------------------------------------------
  alias plan_turn_update update
  def update
        center_x = 640 / 3 - @turn_sprite.bitmap.width / 3
    if @turn_sprite_pos > @turn_out
      if @turn_sprite_pos == -1 and @turn_wait > 0
        @turn_wait -= 1
      else
        pos = PLAN_TURN::RETURN ? @turn_sprite_pos.abs: @turn_sprite_pos
        @turn_sprite.x = center_x + pos * PLAN_TURN::STR_SPEED
        @turn_sprite_pos -= 1
        @turn_sprite.update
      end
      # 没有回合显示中的按键输入则结束
      return if PLAN_TURN::KEY_WAIT
    end
    # 还原为原始方法
    plan_turn_update
  end
  #--------------------------------------------------------------------------
  # ● 命令阶段开始
  #--------------------------------------------------------------------------
  alias plan_turn_start_phase2 start_phase2
  def start_phase2
    if @old_turn != $game_temp.battle_turn + 1
      @old_turn = $game_temp.battle_turn + 1
      turn = $game_temp.battle_turn + 1
      turn_str = PLAN_TURN::TURN_STR.gsub("{turn}") {|s| turn.to_s }
      # 精灵宽度和高度
      bitmap = Bitmap.new(1024, 768)
      bitmap.font.name = PLAN_TURN::FONT_NAME
      bitmap.font.size = PLAN_TURN::FONT_SIZE
      bitmap.font.bold = PLAN_TURN::FONT_BOLD
      rect = bitmap.text_size(turn_str)
      bitmap.dispose
      bitmap = nil
      @turn_sprite.bitmap.dispose
      @turn_sprite.bitmap = nil
      @turn_sprite.bitmap = Bitmap.new(rect.width, rect.height)
      @turn_sprite.bitmap.font.name = PLAN_TURN::FONT_NAME
      @turn_sprite.bitmap.font.size = PLAN_TURN::FONT_SIZE
      @turn_sprite.bitmap.font.bold = PLAN_TURN::FONT_BOLD
      @turn_sprite.bitmap.font.italic = PLAN_TURN::FONT_ITALIC
      @turn_sprite.bitmap.font.color = PLAN_TURN::FRAME_COLOR
      if defined?(@turn_sprite.bitmap.draw_text_plan_frame)
        @turn_sprite.bitmap.draw_text_plan_frame(0, 0, rect.width, rect.height, turn_str)
        @turn_sprite.bitmap.draw_text_plan_frame(2, 0, rect.width, rect.height, turn_str)
        @turn_sprite.bitmap.draw_text_plan_frame(0, 2, rect.width, rect.height, turn_str)
        @turn_sprite.bitmap.draw_text_plan_frame(2, 2, rect.width, rect.height, turn_str)
        @turn_sprite.bitmap.font.color = PLAN_TURN::STR_COLOR
        @turn_sprite.bitmap.draw_text_plan_frame(1, 1, rect.width, rect.height, turn_str)
      else
        @turn_sprite.bitmap.draw_text(0, 0, rect.width, rect.height, turn_str)
        @turn_sprite.bitmap.draw_text(2, 0, rect.width, rect.height, turn_str)
        @turn_sprite.bitmap.draw_text(0, 2, rect.width, rect.height, turn_str)
        @turn_sprite.bitmap.draw_text(2, 2, rect.width, rect.height, turn_str)
        @turn_sprite.bitmap.font.color = PLAN_TURN::STR_COLOR
        @turn_sprite.bitmap.draw_text(-1, 1, rect.width, rect.height, turn_str)
      end
      center_x = 640 / 2 - @turn_sprite.bitmap.width / 2
      @turn_out = -(640 / PLAN_TURN::STR_SPEED)
      @turn_sprite_pos = (640 - center_x) / PLAN_TURN::STR_SPEED
      @turn_sprite.x = 1024
      @turn_sprite.y = 300 / 2 - rect.height / 2
      @turn_wait = PLAN_TURN::CENTER_WAIT
    end
    # 还原为原始方法
    plan_turn_start_phase2
  end
end

#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================
[/pre]
梦石
1
星屑
24088
在线时间
3339 小时
注册时间
2011-7-8
回帖
3862

开拓者

发表于 2022-6-9 15:35:10 | 显示全部楼层
居然是ikki写的?你只要把所有跟x有关的改成跟y有关就行,不过坐标的具体数值你得仔细调了。控制移动的代码是64行:
  1. @turn_sprite.x = center_x + pos * PLAN_TURN::STR_SPEED
复制代码
改成操作@turn_sprite.y就行,注意pos是每回合都会重新计算的,丑陋点的话你可以在这里硬编码公式,不然就去修改所有跟@turn_sprite_pos有关的地方吧。
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复

使用道具 举报

梦石
0
星屑
3850
在线时间
1899 小时
注册时间
2010-6-19
回帖
917
 楼主| 发表于 2022-6-9 17:19:39 | 显示全部楼层
guoxiaomi 发表于 2022-6-9 15:35
居然是ikki写的?你只要把所有跟x有关的改成跟y有关就行,不过坐标的具体数值你得仔细调了。控制移动的代码 ...

弄好了感谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部