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

Project1

 找回密码
 注册会员
搜索
查看: 3057|回复: 3
打印 上一主题 下一主题

[原创发布] Vx型Xp用 - Player增强 - Player_Add

[复制链接]

Lv2.观梦者

虚構歪曲

梦石
0
星屑
364
在线时间
1198 小时
注册时间
2010-12-18
帖子
3928

贵宾

跳转到指定楼层
1
发表于 2011-5-2 11:43:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 忧雪の伤 于 2011-5-6 20:35 编辑

清单:
领队切换
惯性行走
弹性滚动
八方向键移动



(如果有其他需要可以回帖(?))

  1. #==============================================================================
  2. # ** Player_Add
  3. #==============================================================================
  4. #==============================================================================
  5. # ■ Game_Player
  6. #------------------------------------------------------------------------------
  7. #  处理主角的类。事件启动的判定、以及地图的滚动等功能。
  8. # 本类的实例请参考 $game_player。
  9. #==============================================================================

  10. class Game_Player < Game_Character
  11.   #--------------------------------------------------------------------------
  12.   # ● 常量
  13.   #--------------------------------------------------------------------------
  14.   TRUE_SPEED = 4
  15.   BEGIN_SPEED = 2
  16.   #--------------------------------------------------------------------------
  17.   # ● 刷新
  18.   #--------------------------------------------------------------------------
  19.   def refresh
  20.     @character_name = ""
  21.     @character_hue = 0
  22.     return if $game_party.actors.size.zero?
  23.     @leader_id = 0 if @leader_id.nil? or $game_party.actors[@leader_id].nil?
  24.     actor = $game_party.actors[@leader_id]
  25.     @character_name = actor.character_name
  26.     @character_hue = actor.character_hue
  27.   end
  28.   #--------------------------------------------------------------------------
  29.   # ● 更新惯性
  30.   #--------------------------------------------------------------------------
  31.   def update_inertia
  32.     return @move_speed = BEGIN_SPEED if Input.dir8 == 0
  33.     return @move_speed += 0.5 if @move_speed < TRUE_SPEED
  34.   end
  35.   #--------------------------------------------------------------------------
  36.   # ● 更新领队切换
  37.   #--------------------------------------------------------------------------
  38.   def update_captain
  39.     @leader_id += 1 if Input.trigger?(Input::R)
  40.     @leader_id -= 1 if Input.trigger?(Input::L)
  41.     refresh if Input.trigger?(Input::L) or Input.trigger?(Input::R)
  42.   end   
  43.   #--------------------------------------------------------------------------
  44.   # ● 方向键移动处理
  45.   #--------------------------------------------------------------------------
  46.   def move_by_input
  47.     return unless movable?
  48.     return if $game_system.map_interpreter.running?
  49.     case Input.dir8
  50.     when 2;  move_down
  51.     when 4;  move_left
  52.     when 6;  move_right
  53.     when 8;  move_up
  54.     when 1;  move_lower_left
  55.     when 3;  move_lower_right
  56.     when 7;  move_upper_left
  57.     when 9;  move_upper_right
  58.     end
  59.     update_inertia
  60.   end
  61.   #--------------------------------------------------------------------------
  62.   # ● 可以行动判定
  63.   #--------------------------------------------------------------------------
  64.   def movable?
  65.     return false if moving?                  
  66.     return false if @move_route_forcing      
  67.     return false if $game_temp.message_window_showing     
  68.     return true
  69.   end
  70.   #--------------------------------------------------------------------------
  71.   # ● 更新画面
  72.   #--------------------------------------------------------------------------
  73.   def update
  74.     update_captain
  75.     last_real_x = @real_x
  76.     last_real_y = @real_y
  77.     last_moving = moving?
  78.     move_by_input
  79.     super
  80.     update_scroll(last_real_x, last_real_y)
  81.     update_nomoving(last_moving)
  82.   end
  83.   #--------------------------------------------------------------------------
  84.   # ● 更新滚动
  85.   #--------------------------------------------------------------------------
  86.   def update_scroll(last_real_x, last_real_y)
  87.     ax1 = $game_map.adjust_x(last_real_x)
  88.     ay1 = $game_map.adjust_y(last_real_y)
  89.     ax2 = $game_map.adjust_x(@real_x)
  90.     ay2 = $game_map.adjust_y(@real_y)
  91.     slowmove = (2 ** (@move_speed - 1)).to_i
  92.     fastmove = (2 ** @move_speed).to_i
  93.     length = (2 ** (@move_speed + 4)).to_i
  94.     if ax2 < CENTER_X - 8
  95.       if (ax2 - CENTER_X) <= -length
  96.         $game_map.scroll_left(fastmove)
  97.       else
  98.         $game_map.scroll_left(slowmove)
  99.       end
  100.     elsif ax2 > CENTER_X + 8
  101.       if (ax2 - CENTER_X) >= length
  102.         $game_map.scroll_right(fastmove)
  103.       else
  104.         $game_map.scroll_right(slowmove)
  105.       end
  106.     end
  107.     if ay2 < CENTER_Y - 8
  108.       if (ay2 - CENTER_Y) <= -length
  109.         $game_map.scroll_up(fastmove)
  110.       else
  111.         $game_map.scroll_up(slowmove)
  112.       end
  113.     elsif ay2 > CENTER_Y + 8
  114.       if (ay2 - CENTER_Y) >= length
  115.         $game_map.scroll_down(fastmove)
  116.       else
  117.         $game_map.scroll_down(slowmove)
  118.       end
  119.     end   
  120.   end  
  121.   #--------------------------------------------------------------------------
  122.   # ● 非移动中更新
  123.   #     last_moving : 之前是否正在移动
  124.   #--------------------------------------------------------------------------
  125.   def update_nomoving(last_moving)
  126.     return if $game_system.map_interpreter.running?
  127.     return if moving?
  128.     return if check_touch_event if last_moving
  129.     if not $game_temp.message_window_showing and Input.trigger?(Input::C)
  130.       return if check_action_event
  131.     end
  132.     update_encounter if last_moving
  133.   end
  134.   #--------------------------------------------------------------------------
  135.   # ● 更新遇敌
  136.   #--------------------------------------------------------------------------
  137.   def update_encounter
  138.     return if $DEBUG and Input.press?(Input::CTRL)   
  139.     if $game_map.bush?(@x, @y)                  
  140.       @encounter_count -= 2                     
  141.     else                                            
  142.       @encounter_count -= 1                     
  143.     end
  144.   end
  145.   #--------------------------------------------------------------------------
  146.   # ● 判断事件是否由接触触发(重叠)
  147.   #--------------------------------------------------------------------------
  148.   def check_touch_event
  149.     return check_event_trigger_here([1,2])
  150.   end
  151.   #--------------------------------------------------------------------------
  152.   # ● 判断事件是否由确认键触发
  153.   #--------------------------------------------------------------------------
  154.   def check_action_event
  155.     return true if check_event_trigger_here([0])
  156.     return check_event_trigger_there([0,1,2])
  157.   end
  158. end

  159. #==============================================================================
  160. # ■ Game_Map
  161. #------------------------------------------------------------------------------
  162. #  处理地图的类。包含卷动以及可以通行的判断功能。本类的实例请参考 $game_map 。
  163. #==============================================================================

  164. class Game_Map
  165.   #--------------------------------------------------------------------------
  166.   # ● 计算 X 座标减去显示座标
  167.   #     x : X 座标
  168.   #--------------------------------------------------------------------------
  169.   def adjust_x(x)
  170.     return x - @display_x
  171.   end
  172.   #--------------------------------------------------------------------------
  173.   # ● 计算 Y 座标减去显示座标
  174.   #     y : Y 座标
  175.   #--------------------------------------------------------------------------
  176.   def adjust_y(y)
  177.     return y - @display_y
  178.   end
  179. end
复制代码

点评

⊙_⊙支持!  发表于 2013-9-6 23:03
想不到您做脚本真有天赋,我好佩服啊!  发表于 2011-5-21 17:38

评分

参与人数 2星屑 +880 +2 收起 理由
eve592370698 + 880 我也算是尽到仁义了。
夕阳武士 + 2 长期贡献的奖励

查看全部评分

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
10 小时
注册时间
2011-4-30
帖子
23
2
发表于 2011-5-2 12:01:11 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1347
在线时间
676 小时
注册时间
2009-11-11
帖子
2790
3
发表于 2011-5-2 16:16:46 | 只看该作者
哇,好啊~~~,大人能不能来个   VX战斗中换人版

点评

⊙_⊙  发表于 2013-9-6 23:05

嘿。嘿。嘿
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
655 小时
注册时间
2011-10-18
帖子
41
4
发表于 2011-10-31 13:06:10 | 只看该作者
本帖最后由 winsonzhong 于 2011-11-2 13:20 编辑

又测试了下,发现如果画面卷动速度低于“begin speed"时是无法卷动的,而高于这个速度画面卷动时则可以,但是实际卷动距离只有定义的1/2,并且卷动完后,画面又自动锁定回角色恒定位置(角色位于画面中央)那里,这个怎么解决呢?

点评

测试可卷动,请自行确认脚本冲突。  发表于 2011-11-2 05:23
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-26 04:38

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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