Project1

标题: 跳跃脚本改建 [打印本页]

作者: 575539640    时间: 2013-4-19 06:16
标题: 跳跃脚本改建
怎样把跳跃脚本改成C键跳跃

RUBY 代码复制
  1. #==============================================================================
  2. # ■ 按键跳跃
  3. #    Jump Skill
  4. #------------------------------------------------------------------------------
  5. #   让角色拥有跳跃的能力,这个功能类似于《暗黑破坏神II》中野蛮人的技能。
  6. #    这个脚本是友好的,在作者公开的白皮书下,你可以实现很多效果!
  7. #
  8. #    当玩家按下键时,主角就会执行跳跃,根据配置的不同,可以做出“跳跃技能”
  9. #    为生活技能的效果。
  10. #
  11. #------------------------------------------------------------------------------
  12. #    更新作者: DeathKing
  13. #    许可协议: FSL
  14. #    项目版本: 1.1.0107
  15. #    最后更新: 2011-01-07
  16. #    引用网址:
  17. #------------------------------------------------------------------------------
  18. #    - 1.1.0107 By DeathKing
  19. #      * 整理配置模块;
  20. #      * 优化算法,使他运行更为流畅;
  21. #
  22. #    - 1.0.0613 By DeathKing
  23. #      * 初始版本完成;
  24. #
  25. #==============================================================================
  26.  
  27. #------------------------------------------------------------------------------
  28. # ▼ 登记FSL
  29. #------------------------------------------------------------------------------
  30. $fscript = {} if $fscript == nil
  31. $fscript["JumpSkill"] = "1.1.0107"
  32.  
  33. #------------------------------------------------------------------------------
  34. # ▼ 通用配置模块
  35. #------------------------------------------------------------------------------
  36. #  在游戏中你可以修改这些常量!
  37. #  记得使用::解析域!
  38. #  FSL::JumpSkill::常量 = ***
  39. #------------------------------------------------------------------------------
  40. module FSL
  41.   module JumpSkill
  42.  
  43.     # 允许跳跃,当这个为false时则不允许跳跃
  44.     JUMP_ALLOWED = true
  45.     # 每次跳跃的距离
  46.     JUMP_LENGTH = 2
  47.     # 跳跃对应按键,可以配合全键盘脚本使用
  48.     JUMP_BUTTON = Input::L
  49.  
  50.     # 如果这个id不为0的话,只有在制定id的角色在
  51.     # 队伍中且MP足够、会跳跃技能才可施放。
  52.     # 如果JUMP_SKILL_ID为0,则指需要满足指定角色
  53.     # 在队伍中
  54.  
  55.     # 跳跃技能对应主角编号
  56.     JUMP_ACTOR_ID = 0
  57.     # 跳跃技能对应编号,一个开关属性,
  58.     # 要求跳跃技能对应主角习得此技能才可跳跃
  59.     JUMP_SKILL_ID = 0
  60.     # 每次跳跃消耗的MP
  61.     JUMP_COST_MP  = 1
  62.  
  63.     # 如果不想听见烦人的音乐,请让他等于一个空字符串
  64.     # 一个SE文件示范:"Audio/SE/Jump1"
  65.  
  66.     # 跳跃技能SE音效文件名(可跳跃的场合)
  67.     JUMP_ABLE_SE       = ""  #"Audio/SE/Jump1"
  68.     # 跳跃技能SE音效文件名(不可跳跃的场合)
  69.     JUMP_DISABLE_SE    = ""  #"Audio/SE/Buzzer1"
  70.  
  71.   end # JumpSkill
  72. end # FSL
  73.  
  74. #==============================================================================
  75. # ■ Game_Player
  76. #------------------------------------------------------------------------------
  77. #  处理主角的类。事件启动的判定、以及地图的滚动等功能。
  78. # 本类的实例请参考 $game_player。
  79. #==============================================================================
  80.  
  81. class Game_Player < Game_Character
  82.  
  83.   include FSL::JumpSkill
  84.  
  85.   alias jump_skill_update update
  86.  
  87.   #---------------------------------------------------------------------------
  88.   # ● 刷新画面
  89.   #---------------------------------------------------------------------------
  90.   def update
  91.     jump_by_input
  92.     jump_skill_update
  93.   end
  94.   #---------------------------------------------------------------------------
  95.   # ● 是否按下跳跃键
  96.   #---------------------------------------------------------------------------
  97.   def jump_by_input
  98.     # 判断是否按下了跳跃键
  99.     return false unless Input.trigger?( JUMP_BUTTON )
  100.     # 判断是否可跳跃
  101.     if jumpable?
  102.       # 是的话就执行跳跃
  103.       # 播放跳跃SE
  104.       Audio.se_play( JUMP_ABLE_SE ) if JUMP_ABLE_SE != ""
  105.       # 扣除MP
  106.       unless JUMP_ACTOR_ID == 0
  107.         $game_actors[JUMP_ACTOR_ID].mp -= JUMP_COST_MP
  108.       end
  109.       # 执行跳跃
  110.       sjump
  111.       return true
  112.     else
  113.       # 否的话就播放无法跳跃的音效
  114.       Audio.se_play( JUMP_DISABLE_SE ) if JUMP_DISABLE_SE != ""
  115.       return false
  116.     end
  117.   end
  118.   #---------------------------------------------------------------------------
  119.   # ● 是否可跳跃
  120.   #---------------------------------------------------------------------------
  121.   #     此方法不会检查跳跃目的地是否可以通行,关于跳跃目的地是否可以通行,
  122.   #     是由sjump方法完成的。
  123.   #---------------------------------------------------------------------------
  124.   def jumpable?
  125.     # 不允许跳跃就返回false
  126.     return false unless JUMP_ALLOWED
  127.     jump_skill_actor = $game_actors[JUMP_ACTOR_ID]
  128.     jump_skill = $data_skills[JUMP_SKILL_ID]
  129.     # 获得主角是否有跳跃技能
  130.     unless JUMP_ACTOR_ID == 0
  131.       unless JUMP_SKILL_ID == 0
  132.         # 如果角色不在队伍中就无法使用
  133.         unless $game_party.members.include?( jump_skill_actor )
  134.           return false
  135.         else
  136.           # 如果指定角色不会改技能就无法使用
  137.           return false unless jump_skill_actor.skill_learn?( jump_skill )
  138.           # 如果角色的MP不够就无法使用
  139.           return false unless jump_skill_actor.mp >= JUMP_COST_MP
  140.           return true
  141.         end
  142.       else
  143.         return true
  144.       end
  145.     else
  146.       return true
  147.     end
  148.   end
  149.   #---------------------------------------------------------------------------
  150.   # ● 超级跳跃
  151.   #     x_plus : X 座标增值
  152.   #     y_plus : Y 座标增值
  153.   #---------------------------------------------------------------------------
  154.   #     此跳跃可以搜寻跳跃能力内的最大跳跃限度,遗憾的是,这个只能搜寻一条
  155.   #     直线。
  156.   #---------------------------------------------------------------------------
  157.   def sjump
  158.     # 数据初始化
  159.     x_plus = y_plus = 0
  160.     # 获得主角朝向,使用逆推搜寻
  161.     case @direction
  162.     when 2
  163.       JUMP_LENGTH.downto(1) do |i|
  164.         if passable?( x , y + i )
  165.           x_plus, y_plus = 0, i
  166.           break
  167.         end
  168.       end
  169.     when 4
  170.       JUMP_LENGTH.downto(1) do |i|
  171.         if passable?( x - i , y )
  172.           x_plus, y_plus = -i, 0
  173.           break
  174.         end
  175.       end
  176.     when 6
  177.       JUMP_LENGTH.downto(1) do |i|
  178.         if passable?( x + i , y )
  179.           x_plus, y_plus = i, 0
  180.           break
  181.         end
  182.       end
  183.     when 8
  184.       JUMP_LENGTH.downto(1) do |i|
  185.         if passable?( x , y - i )
  186.           x_plus, y_plus = 0, -i
  187.           break
  188.         end
  189.       end
  190.     end # case @direction
  191.     if x_plus.abs > y_plus.abs            # 横向距离较大
  192.       x_plus < 0 ? turn_left : turn_right
  193.     elsif x_plus.abs > y_plus.abs         # 纵向距离较大
  194.       y_plus < 0 ? turn_up : turn_down
  195.     end
  196.     @x += x_plus
  197.     @y += y_plus
  198.     distance = Math.sqrt(x_plus * x_plus + y_plus * y_plus).round
  199.     @jump_peak = 10 - @move_speed + distance
  200.     @jump_count = @jump_peak * 2
  201.     @stop_count = 0
  202.     straighten
  203.   end  
  204. end


工程下面

跳跃.zip (253.36 KB, 下载次数: 70)
作者: 351323331    时间: 2013-4-19 08:46
JUMP_BUTTON = Input::L
把这个改成JUMP_BUTTON = Input::C
不行吗?
作者: Password    时间: 2013-4-19 18:19
打开游戏的时候按F1,第三页,里面貌似有键盘上C键的设置。




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