Project1

标题: 新人请教关于移动速度的问题 [打印本页]

作者: keezhang714    时间: 2013-1-12 16:04
标题: 新人请教关于移动速度的问题
请问能不能通过脚本调整主角和事件的初始移动速度?
作者: Sion    时间: 2013-1-12 17:47
事件——设置移动路线——修改移动速度用过吗?不能满足你的要求?
作者: keezhang714    时间: 2013-1-13 02:30
本帖最后由 keezhang714 于 2013-1-13 02:36 编辑

这个我知道,我只是想知道能不能调整固定移动速度以外的
更快一点,或是更慢一点
顺便我也想知道如何让主角不能跑步
作者: 视觉诱惑    时间: 2013-1-13 04:04
keezhang714 发表于 2013-1-13 02:30
这个我知道,我只是想知道能不能调整固定移动速度以外的
更快一点,或是更慢一点
顺便我也想知道如何让主角 ...

跑步快捷键  Shift
作者: 视觉诱惑    时间: 2013-1-13 04:11
keezhang714 发表于 2013-1-13 02:30
这个我知道,我只是想知道能不能调整固定移动速度以外的
更快一点,或是更慢一点
顺便我也想知道如何让主角 ...

我也是新人这问题 我也想知道 期待高手 解答
作者: acn00269    时间: 2013-1-13 09:13
这是和八方向一起的,不过一开始把100号开关关掉就行了,其他的自己看注释解决
  1. #==============================================================================
  2. #  ■8方向移动 for RGSS3 Ver1.01 by 星潟
  3. #
  4. #     功能: 1.可以设置角色往8方向移动.
  5. #           2.可以设置关于移动的一部分功能.
  6. #==============================================================================
  7. # 使用说明:
  8. #   ★通过开关操作切换8方向移动的ON/OFF和能够设置一切移动的禁止.
  9. #   ★根据开关操作调转奔跑判定键.
  10. #   ★根据变量操作实行奔跑速度的强化.
  11. #   ★根据开关切换追加奔跑禁止功能.
  12. #
  13. #==============================================================================

  14. module MOVE_CONTROL
  15.   #--------------------------------------------------------------------------
  16.   # ● 基本设置(新增定义)
  17.   #--------------------------------------------------------------------------
  18.   # 这个开关ON的时候禁止8方向移动,只能4方向移动
  19.   FOUR_MOVE_SWITCH = 100
  20.   
  21.   # 这个开关ON的时候禁止操作角色
  22.   MOVE_SEAL_SWITCH = 101
  23.   
  24.   # 这个开关ON的时候调转奔跑判定键
  25.   # 平时奔跑时按下奔跑键的状态变成通常行走
  26.   DASH_REV = 102
  27.   
  28.   # 这个开关ON的时候奔跑不能使用
  29.   # 开关切换使同一地图能够奔跑的场所和不能奔跑的场所区别开来
  30.   DASH_SEAL = 103
  31.   
  32.   # 这个变量比0大的时候奔跑速度会再次增加
  33.   DASH_PLUS = 104
  34.   
  35. end

  36. class Game_CharacterBase
  37.   #--------------------------------------------------------------------------
  38.   # ● 取得移动速度(考虑奔跑状态)(重定义)
  39.   #--------------------------------------------------------------------------
  40.   alias real_move_speed_8direction real_move_speed
  41.   def real_move_speed
  42.     if $game_variables[MOVE_CONTROL::DASH_PLUS] > 0
  43.       dash_plus = 1 + ($game_variables[MOVE_CONTROL::DASH_PLUS] * 0.1)
  44.       @move_speed + (dash? ? dash_plus : 0)
  45.     else
  46.       real_move_speed_8direction
  47.     end
  48.   end
  49. end

  50. class Game_Player < Game_Character
  51.   #--------------------------------------------------------------------------
  52.   # ● 判定奔跑状态(重定义)
  53.   #--------------------------------------------------------------------------
  54.   alias dash_rev? dash?
  55.   def dash?
  56.     return false if $game_switches[MOVE_CONTROL::DASH_SEAL] == true
  57.     if $game_switches[MOVE_CONTROL::DASH_REV] == true
  58.       return false if @move_route_forcing
  59.       return false if $game_map.disable_dash?
  60.       return false if vehicle
  61.       return false if Input.press?(:A)
  62.       return true
  63.     else
  64.       dash_rev?
  65.     end
  66.   end
  67.   #--------------------------------------------------------------------------
  68.   # ● 处理方向键输入作出的移动(重定义)
  69.   #--------------------------------------------------------------------------
  70.   alias move_by_input_8direction move_by_input
  71.   def move_by_input
  72.     return if $game_switches[MOVE_CONTROL::MOVE_SEAL_SWITCH] == true
  73.     if $game_switches[MOVE_CONTROL::FOUR_MOVE_SWITCH] == true
  74.       move_by_input_8direction
  75.       return
  76.     end
  77.     return if !movable? || $game_map.interpreter.running?
  78.     if Input.press?(:LEFT) && Input.press?(:DOWN)
  79.       if passable?(@x, @y, 4) && passable?(@x, @y, 2) &&
  80.         passable?(@x - 1, @y, 2) && passable?(@x, @y + 1, 4) &&
  81.         passable?(@x - 1, @y + 1, 6) && passable?(@x - 1, @y + 1, 8)
  82.         move_diagonal(4, 2)
  83.       elsif @direction == 4
  84.         if passable?(@x, @y, 2) && passable?(@x, @y + 1, 8)
  85.           move_straight(2)
  86.         elsif passable?(@x, @y, 4) && passable?(@x - 1, @y, 6)
  87.           move_straight(4)
  88.         end
  89.       elsif @direction == 2
  90.         if passable?(@x, @y, 4) && passable?(@x - 1, @y, 6)
  91.           move_straight(4)
  92.         elsif passable?(@x, @y, 2) && passable?(@x, @y + 1, 8)
  93.           move_straight(2)
  94.         else
  95.           move_straight(Input.dir4) if Input.dir4 > 0
  96.         end
  97.       else
  98.         move_straight(Input.dir4) if Input.dir4 > 0
  99.       end
  100.     elsif Input.press?(:RIGHT) && Input.press?(:DOWN)
  101.       if passable?(@x, @y, 6) && passable?(@x, @y, 2) &&
  102.         passable?(@x + 1, @y, 2) && passable?(@x, @y + 1, 6) &&
  103.         passable?(@x + 1, @y + 1, 4) && passable?(@x + 1, @y + 1, 8)
  104.         move_diagonal(6, 2)
  105.       elsif @direction == 6
  106.         if passable?(@x, @y, 2) && passable?(@x, @y + 1, 8)
  107.           move_straight(2)
  108.         elsif passable?(@x, @y, 6) && passable?(@x + 1, @y, 4)
  109.           move_straight(6)
  110.         end
  111.       elsif @direction == 2
  112.         if passable?(@x, @y, 6) && passable?(@x + 1, @y, 4)
  113.           move_straight(6)
  114.         elsif passable?(@x, @y, 2) && passable?(@x, @y + 1, 8)
  115.           move_straight(2)
  116.         else
  117.           move_straight(Input.dir4) if Input.dir4 > 0
  118.         end
  119.       else
  120.         move_straight(Input.dir4) if Input.dir4 > 0
  121.       end
  122.     elsif Input.press?(:LEFT) && Input.press?(:UP)
  123.       if passable?(@x, @y, 4) && passable?(@x, @y, 8) &&
  124.         passable?(@x - 1, @y, 8) && passable?(@x, @y - 1, 4) &&
  125.         passable?(@x - 1, @y - 1, 2) && passable?(@x - 1, @y - 1, 6)
  126.         move_diagonal(4, 8)
  127.       elsif @direction == 4
  128.         if passable?(@x, @y, 8) && passable?(@x, @y - 1, 2)
  129.           move_straight(8)
  130.         elsif passable?(@x, @y, 4) && passable?(@x - 1, @y, 6)
  131.           move_straight(4)
  132.         else
  133.           move_straight(Input.dir4) if Input.dir4 > 0
  134.         end
  135.       elsif @direction == 8
  136.         if passable?(@x, @y, 4) && passable?(@x - 1, @y, 6)
  137.           move_straight(4)
  138.         elsif passable?(@x, @y, 8) && passable?(@x, @y - 1, 2)
  139.           move_straight(8)
  140.         else
  141.           move_straight(Input.dir4) if Input.dir4 > 0
  142.         end
  143.       else
  144.         move_straight(Input.dir4) if Input.dir4 > 0
  145.       end
  146.     elsif Input.press?(:RIGHT) && Input.press?(:UP)
  147.       if passable?(@x, @y, 6) && passable?(@x, @y, 8) &&
  148.         passable?(@x + 1, @y, 8) && passable?(@x, @y - 1, 6) &&
  149.         passable?(@x + 1, @y - 1, 2) && passable?(@x + 1, @y - 1, 4)
  150.         move_diagonal(6, 8)
  151.       elsif @direction == 6
  152.         if passable?(@x, @y, 8) && passable?(@x, @y - 1, 2)
  153.           move_straight(8)
  154.         elsif passable?(@x, @y, 6) && passable?(@x + 1, @y, 4)
  155.           move_straight(6)
  156.         else
  157.           move_straight(Input.dir4) if Input.dir4 > 0
  158.         end
  159.       elsif @direction == 8
  160.         if passable?(@x, @y, 6) && passable?(@x + 1, @y, 4)
  161.           move_straight(6)
  162.         elsif passable?(@x, @y, 8) && passable?(@x, @y - 1, 2)
  163.           move_straight(8)
  164.         else
  165.           move_straight(Input.dir4) if Input.dir4 > 0
  166.         end
  167.       else
  168.         move_straight(Input.dir4) if Input.dir4 > 0
  169.       end
  170.     else
  171.       move_straight(Input.dir4) if Input.dir4 > 0
  172.     end
  173.     unless moving?
  174.       @direction = Input.dir4 unless Input.dir4 == 0
  175.     end
  176.   end
  177. end
复制代码

作者: j433463    时间: 2013-1-13 10:32
地图设置中本来就有禁止跑步的勾选项,勾选的话在那一张地图上就不能跑步,
从 @map.disable_dash 似乎应该禁止跑步是  $game_map.disable_dash 吧。

或者您把 Game_CharacterBase 中取得搬移速度 def real_move_speed 的

    @move_speed + (dash? ? 1 : 0)

那个 1 改成 0,就不管在哪一张地图按 Shift 键都不会跑了,
改变是改成 0.5,那跑的速度只有原来的一半,算是调整速度了吧?
要走路速度快一点,把后面那个 0 改成 0.2 试试。
作者: 双黄连2    时间: 2013-1-13 10:37
设置移动路线:
脚本:@move_speed = 0.1#建议不要超过6,原因嘛...
作者: Sion    时间: 2013-1-13 10:41
本帖最后由 Sion 于 2013-1-13 10:58 编辑
keezhang714 发表于 2013-1-13 02:30
这个我知道,我只是想知道能不能调整固定移动速度以外的
更快一点,或是更慢一点
顺便我也想知道如何让主角 ...


Game_CharacterBase
  1.   #--------------------------------------------------------------------------
  2.   # ● 初始化公有成员变量
  3.   #--------------------------------------------------------------------------
  4.   def init_public_members
  5.     @id = 0
  6.     @x = 0
  7.     @y = 0
  8.     @real_x = 0
  9.     @real_y = 0
  10.     @tile_id = 0
  11.     @character_name = ""
  12.     @character_index = 0
  13.     @move_speed = 4 #默认移动速度 可以设置非整数。
  14.    #但是每增加1速度提升1倍:速度 = 基速度*2^@move_speed
  15.     @move_frequency = 6
  16.     @walk_anime = true
  17.     @step_anime = false
  18.     @direction_fix = false
  19.     @blend_type = 0
  20.     @direction = 2
  21.     @pattern = 1
  22.     @priority_type = 1
  23.     @through = false
  24.     @bush_depth = 0
  25.     @animation_id = 0
  26.     @balloon_id = 0
  27.     @transparent = false
  28.   end

  29.   #--------------------------------------------------------------------------
  30.   # ● 获取移动速度(判断是否跑步)
  31.   #--------------------------------------------------------------------------
  32.   def real_move_speed
  33.     @move_speed + (dash? ? 1 : 0) #dash状态下速度加1
  34.   end
复制代码
禁用跑步地图信息里可以设置
补充一点:设置移动路线中插入@move_speed = x 也可以改变速度,突破设置选项里只有123456档的限制,不过还是有上限,超过8的系统都视为8。
@move_speed = 8 非常high的速度
作者: keezhang714    时间: 2013-1-13 11:40
本帖最后由 keezhang714 于 2013-1-13 11:46 编辑

非常谢谢大家!




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