设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1735|回复: 11

[已经解决] 关于Side view横版脚本初始队列改造的想法【已解决】

[复制链接]

Lv3.寻梦者

梦石
0
星屑
4863
在线时间
485 小时
注册时间
2018-6-18
帖子
613
发表于 2018-12-24 17:04:30 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 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都是这样的设定。

Lv3.寻梦者

梦石
0
星屑
4863
在线时间
485 小时
注册时间
2018-6-18
帖子
613
 楼主| 发表于 2018-12-24 17:09:57 | 显示全部楼层
默认固定位置的话,感觉当队伍人少时有点不协调。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1971
在线时间
926 小时
注册时间
2015-10-26
帖子
356

开拓者

发表于 2018-12-24 17:46:28 | 显示全部楼层
  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
复制代码


点评

谢谢大神,这一段直接放到SV里面case $game_party.members.size这一行报错了,是不是在SV里不能直接用呀?  发表于 2018-12-24 21:11

评分

参与人数 2星屑 +20 +1 收起 理由
VIPArcher + 20 我很赞同
RMVXA + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv6.析梦学徒

老鹰

梦石
40
星屑
33382
在线时间
6549 小时
注册时间
2012-5-26
帖子
3178

极短24评委极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

发表于 2018-12-24 18:41:45 | 显示全部楼层
翻了下自己以前的工程,发现改了很多地方,有点点麻烦
只能提供一个思路了

在Sideview脚本里搜索 set_base_position 方法,这个方法是设置战斗者的基础坐标的,你在里面判定队伍出战人数,再将其中的 data 变量赋值为你的坐标数组
有一个需要注意的,如果有队友中途入队,你需要刷新一下所有人的基础坐标,这个具体又去搜下 战斗 - 队友入队 的方法吧

点评

用等差数列算出来了对应的坐标kanshangq:当队伍为1人,2人时,战斗时的位置感觉不会那么偏了!以后用SV做纵版战斗也这么用~  发表于 2018-12-25 19:55
这就是唯一方法了,毕竟基础坐标就这方法里设置;里面data存的是坐标组,你利用上一楼的那个,把POSITION字样全部改成data,在插入到actor?为true分支里  发表于 2018-12-25 11:06
鹰大,如果不考虑中途入队。只考虑战前队伍中的人数(包含死亡)即可。有没有简单一点的例子呀。比如不改动系统管理那部分脚本。完全不会写...  发表于 2018-12-24 21:04

评分

参与人数 2星屑 +20 +1 收起 理由
VIPArcher + 20 认可答案
RMVXA + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4863
在线时间
485 小时
注册时间
2018-6-18
帖子
613
 楼主| 发表于 2018-12-25 18:48:58 | 显示全部楼层
本帖最后由 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





点评

完美!~ 谢谢鹰大!  发表于 2018-12-25 19:50
注释掉的那一行,后面加上 data = data[@battler.index].dup ,用当前角色index所对应的位置数组覆盖全部的  发表于 2018-12-25 19:16
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4863
在线时间
485 小时
注册时间
2018-6-18
帖子
613
 楼主| 发表于 2018-12-25 20:35:35 | 显示全部楼层
百里_飞柳 发表于 2018-12-24 18:41
翻了下自己以前的工程,发现改了很多地方,有点点麻烦
只能提供一个思路了


效果图:感觉这样太棒了!
01.png
02.png
03.png
04.png

回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-18 22:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表