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

Project1

 找回密码
 注册会员
搜索
查看: 303|回复: 7

[已经解决] 请教1号角色的移动速度随其敏捷值增加而增加的思路和写法

[复制链接]

Lv4.逐梦者

梦石
0
星屑
5284
在线时间
200 小时
注册时间
2015-5-8
帖子
498
发表于 2020-1-15 22:08:23 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 taeckle 于 2020-1-15 22:10 编辑

目前为止我就在默认脚本class Game_Character里面找到了那个    "@move_speed = 4"

然后咱把这个问题从简到难又分出了这么几个小问题:

1. 1号角色敏捷值每加100点那个@move_speed加1点,@move_speed上限13

2.当1号角色有第666号状态时那个@move_speed为原来的1.5倍

3. 队伍中每个角色都有一个移动速度,整个队伍的移动速度等于所有队员移动速度之和除以队伍人数



还请诸位大神来指点一二,超级菜鸟我先谢过了!

Lv1.梦旅人

梦石
0
星屑
90
在线时间
3 小时
注册时间
2019-11-23
帖子
1
发表于 2020-1-16 17:12:38 | 显示全部楼层
  1. class Game_Actor < Game_Battler
  2.   def get_move_speed
  3.     speed = 4 + self.agi / 100.0
  4.     speed *= 1.5 if self.state?(666)
  5.     return speed
  6.   end
  7. end

  8. class Game_Player
  9.   alias old_update update
  10.   def update
  11.     unless moving? or $game_system.map_interpreter.running? or
  12.       @move_route_forcing or $game_temp.message_window_showing  
  13.       if $game_party != nil and $game_party.actors.size > 0
  14.         @move_speed = 0
  15.         for actor in $game_party.actors
  16.           @move_speed += actor.get_move_speed
  17.         end
  18.         @move_speed /= $game_party.actors.size
  19.         @move_speed = 13 if @move_speed > 13
  20.       end
  21.     end
  22.     old_update
  23.   end
  24. end
复制代码


大概就是这么个意思,另外RMXP里速度默认是4,一般最大是6,我这只是按照你说的写的,代码里的参数还是要根据实际情况调。

评分

参与人数 2星屑 +60 +2 收起 理由
RyanBern + 60 + 1 认可答案
taeckle + 1 多谢指点!

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
17071
在线时间
1821 小时
注册时间
2011-7-8
帖子
2698

开拓者

发表于 2020-1-16 17:27:39 | 显示全部楼层
XP默认脚本里@move_speed每 +1,移动速度 x2 。此外,如果@move_speed不是整数,行走的动作会很别扭。

评分

参与人数 1+1 收起 理由
taeckle + 1 明白了!多谢大神指点!

查看全部评分

熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
5284
在线时间
200 小时
注册时间
2015-5-8
帖子
498
 楼主| 发表于 2020-1-22 02:32:35 | 显示全部楼层
本帖最后由 taeckle 于 2020-1-22 02:33 编辑
七色史莱姆 发表于 2020-1-16 17:12
大概就是这么个意思,另外RMXP里速度默认是4,一般最大是6,我这只是按照你说的写的,代码里的参数还是要 ...


大神我看默认脚本都是在class Game_Character设置那个@move_speed,你这边为啥在Game_Actor和Game Player里设置啊?有什么区别吗?这是默认脚本移动速度设置:

class Game_Character
  #--------------------------------------------------------------------------
  # ● 定义实例变量
  #--------------------------------------------------------------------------
  attr_reader   :id                       # ID
  attr_reader   :x                        # 地图 X 坐标 (理论坐标)
  attr_reader   :y                        # 地图 Y 坐标 (理论坐标)
  attr_reader   :real_x                   # 地图 X 坐标 (实际坐标 * 128)
  attr_reader   :real_y                   # 地图 Y 坐标 (实际坐标 * 128)
  attr_reader   :tile_id                  # 元件 ID  (0 为无效)
  attr_reader   :character_name           # 角色 文件名
  attr_reader   :character_hue            # 角色 色相
  attr_reader   :opacity                  # 不透明度
  attr_reader   :blend_type               # 合成方式
  attr_reader   :direction                # 朝向
  attr_reader   :pattern                  # 图案
  attr_reader   :move_route_forcing       # 移动路线强制标志
  attr_reader   :through                  # 穿透
  attr_accessor :animation_id             # 动画 ID
  attr_accessor :transparent              # 透明状态
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #--------------------------------------------------------------------------
  def initialize
    @id = 0
    @x = 0
    @y = 0
    @real_x = 0
    @real_y = 0
    @tile_id = 0
    @character_name = ""
    @character_hue = 0
    @opacity = 255
    @blend_type = 0
    @direction = 2
    @pattern = 0
    @move_route_forcing = false
    @through = false
    @animation_id = 0
    @transparent = false
    @original_direction = 2
    @original_pattern = 0
    @move_type = 0
    @move_speed = 4  (就是这里)
    @move_frequency = 6  (还有这个frequency也要设置吗?)
    @move_route = nil
    @move_route_index = 0
    @original_move_route = nil
    @original_move_route_index = 0
    @walk_anime = true
    @step_anime = false
    @direction_fix = false
    @always_on_top = false
    @anime_count = 0
    @stop_count = 0
    @jump_count = 0
    @jump_peak = 0
    @wait_count = 0
    @locked = false
    @prelock_direction = 0
  end
...
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1429
在线时间
39 小时
注册时间
2018-6-29
帖子
17
发表于 2020-1-22 13:20:13 | 显示全部楼层
taeckle 发表于 2020-1-22 02:32
大神我看默认脚本都是在class Game_Character设置那个@move_speed,你这边为啥在Game_Actor和Game Player ...

class Game_Actor < Game_Battler是用来计算队伍里角色的速度。这样def get_move_speed里的
speed = 4 + self.agi / 100.0
    speed *= 1.5 if self.state?(666)
    return speed
就能得出角色的速度了。
p Game_Character.ancestors方法可知Game_Character啥也没继承,因此直接在Game_Character写上
  def get_move_speed
    speed = 4 + self.agi / 100.0
    speed *= 1.5 if self.state?(666)
    return speed
  end
是会出错的。就得不出角色的速度。
由于Game Player继承了Game_Character。因此@move_speed的值可以对Game_Character的@move_speed有影响。(我可能理解的还不够深透,但应该是这区别吧?)

评分

参与人数 2星屑 +70 +2 收起 理由
RyanBern + 70 + 1 认可答案
taeckle + 1 多谢大神指点!

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
5284
在线时间
200 小时
注册时间
2015-5-8
帖子
498
 楼主| 发表于 2020-1-22 16:58:28 | 显示全部楼层
1103123301 发表于 2020-1-22 13:20
class Game_Actor < Game_Battler是用来计算队伍里角色的速度。这样def get_move_speed里的
speed = 4 +  ...

那请问大神这"Game_Player" "Game_Actor" "Game_Battler" "Game_Character" 都有啥区别啊?有点晕。。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1429
在线时间
39 小时
注册时间
2018-6-29
帖子
17
发表于 2020-1-23 12:22:19 | 显示全部楼层
taeckle 发表于 2020-1-22 16:58
那请问大神这"Game_Player" "Game_Actor" "Game_Battler" "Game_Character" 都有啥区别啊?有点晕。。 ...

Game_Character类你可以理解为地图上主角与NPC或画面移动的类,如主角与NPC的上下左右走哪些路可以走哪些路不可以走,移动速度多快等。Game_Battler类为战斗的基础类,如主角的HP或敌人的HP都要在Game_Battler类里计算得出,状态的附加与解除等,主角或敌人SP够不够,技能什么场合用等,计算技能威力等就不一一列举了。Game_Actor类为你已方角色处理能力值的类如主角的名字,装备的各项属性和自动状态都由Game_Actor处理。如锅盖,力量+10,你主角就力量+10。
Game_Player类为处理主角的类,如主角的加入与离开队伍人数,主角的最大等级,物品的所持数等。
(这些类也对事件页各个功能都不可缺一,如删了Game_Player,先不说会不会出错,但增减物品或增减金钱防具都不会有效果。如回复药+99,你背包也不会有一个回复药的)

评分

参与人数 1+1 收起 理由
taeckle + 1 多谢大神指点,新年快乐!

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
860
在线时间
30 小时
注册时间
2020-2-16
帖子
71
发表于 2020-2-17 17:58:04 | 显示全部楼层
以此内推,取用的速度,。如果要用灵巧,就把 dex 改成 agi   两项都要取用就 ($game_party.actors[0].dex + $game_party.actors[0].agi)/ 2 >= value
QQ截图20200217175512.png

评分

参与人数 1+1 收起 理由
taeckle + 1 受教了!

查看全部评分

绚烂的烟火
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2020-6-6 13:31

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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