Project1

标题: 关于Side view横版脚本初始队列改造的想法【已解决】 [打印本页]

作者: RMVXA    时间: 2018-12-24 17:04
标题: 关于Side view横版脚本初始队列改造的想法【已解决】
本帖最后由 RMVXA 于 2018-12-25 19:51 编辑

能否根据我方队伍人数,出现不同的初始位置?
例如: 当队伍为1人时,初始队伍位置:
            ACTOR_POSITION   = [[XX,XX, 0]]
           当队伍为2人时,初始队伍位置:
            ACTOR_POSITION   = [[XX,XX, 0],[XX,XX, 0]]
           当队伍为3人时,初始队伍位置:
            ACTOR_POSITION   = [[XX,XX, 0],[XX,XX, 0],[XX,XX,0]]
          当队伍为4人时,初始队伍位置:
            ACTOR_POSITION   = [[XX,XX, 0],[XX,XX, 0],[XX,XX,0],[XX,XX,0]]

貌似很多经典的RPG都是这样的设定。


作者: RMVXA    时间: 2018-12-24 17:09
默认固定位置的话,感觉当队伍人少时有点不协调。
作者: 踢腿水上飘    时间: 2018-12-24 17:46
  1. case $game_party.members.size
  2. when 1
  3.             ACTOR_POSITION   = [[XX,XX, 0]]
  4. when 2
  5.             ACTOR_POSITION   = [[XX,XX, 0],[XX,XX, 0]]
  6. when 3
  7.             ACTOR_POSITION   = [[XX,XX, 0],[XX,XX, 0],[XX,XX,0]]
  8. when 4
  9.             ACTOR_POSITION   = [[XX,XX, 0],[XX,XX, 0],[XX,XX,0],[XX,XX,0]]
  10. end
复制代码



作者: 百里_飞柳    时间: 2018-12-24 18:41
翻了下自己以前的工程,发现改了很多地方,有点点麻烦
只能提供一个思路了

在Sideview脚本里搜索 set_base_position 方法,这个方法是设置战斗者的基础坐标的,你在里面判定队伍出战人数,再将其中的 data 变量赋值为你的坐标数组
有一个需要注意的,如果有队友中途入队,你需要刷新一下所有人的基础坐标,这个具体又去搜下 战斗 - 队友入队 的方法吧
作者: RMVXA    时间: 2018-12-25 18:48
本帖最后由 RMVXA 于 2018-12-25 18:50 编辑
百里_飞柳 发表于 2018-12-24 18:41
翻了下自己以前的工程,发现改了很多地方,有点点麻烦
只能提供一个思路了


鹰大,不知道是不是这一段...  红色部分是我添加的代码(根本不懂,佛系添加):
  #--------------------------------------------------------------------------
  # ● ベース坐标をセット data = [X轴, Y轴, H轴]  moment_set…瞬间配置
  #--------------------------------------------------------------------------

  def set_base_position(moment_set = true)
    mirroring_reset
    if @battler.actor?
   
      case $game_party.members.size
         when 1
            data   = [[XX,XX, 0]]
         when 2
            data   = [[XX,XX, 0],[XX,XX, 0]]
        when 3
            data   = [[XX,XX, 0],[XX,XX, 0],[XX,XX,0]]
        when 4
            data   = [[XXX,XXX, 0],[XXX,XXX, 0],[XXX,XXX, 0],[XXX,XXX, 0]]
        end
  #  data = N03::ACTOR_POSITION[@battler.index].dup
      @base_x = data[0] * 100 if !@mirror
      @base_x = (Graphics.width - data[0]) * 100 if @mirror
    else
      data = [@battler.screen_x, @battler.screen_y, 0].dup
      @base_x = data[0] * 100 if !$sv_camera.mirror
      @base_x = (Graphics.width - data[0]) * 100 if $sv_camera.mirror
    end
    @base_y = data[1] * 100
    @base_h = data[2] * 100
    @base_z = @y
    return if !moment_set
    @x = @base_x
    @y = @base_y
    @z = @base_z
  end






作者: RMVXA    时间: 2018-12-25 20:35
百里_飞柳 发表于 2018-12-24 18:41
翻了下自己以前的工程,发现改了很多地方,有点点麻烦
只能提供一个思路了


效果图:感觉这样太棒了!










欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1