赞 | 4 |
VIP | 28 |
好人卡 | 22 |
积分 | 12 |
经验 | 73335 |
最后登录 | 2024-8-7 |
在线时间 | 1795 小时 |
Lv3.寻梦者 死亡颂唱者
- 梦石
- 0
- 星屑
- 1159
- 在线时间
- 1795 小时
- 注册时间
- 2011-10-21
- 帖子
- 2245
|
本帖最后由 acn00269 于 2012-7-22 10:50 编辑
@星雨空也 这个可以不?- #==============================================================================
- # ■8方向移动 for RGSS3 Ver1.01 by 星潟
- #
- # 功能: 1.可以设置角色往8方向移动.
- # 2.可以设置关于移动的一部分功能.
- #==============================================================================
- # 使用说明:
- # ★通过开关操作切换8方向移动的ON/OFF和能够设置一切移动的禁止.
- # ★根据开关操作调转奔跑判定键.
- # ★根据变量操作实行奔跑速度的强化.
- # ★根据开关切换追加奔跑禁止功能.
- #
- #==============================================================================
- module MOVE_CONTROL
- #--------------------------------------------------------------------------
- # ● 基本设置(新增定义)
- #--------------------------------------------------------------------------
- # 这个开关ON的时候禁止8方向移动,只能4方向移动
- FOUR_MOVE_SWITCH = 100
-
- # 这个开关ON的时候禁止操作角色
- MOVE_SEAL_SWITCH = 101
-
- # 这个开关ON的时候调转奔跑判定键
- # 平时奔跑时按下奔跑键的状态变成通常行走
- DASH_REV = 102
-
- # 这个开关ON的时候奔跑不能使用
- # 开关切换使同一地图能够奔跑的场所和不能奔跑的场所区别开来
- DASH_SEAL = 103
-
- # 这个变量比0大的时候奔跑速度会再次增加
- DASH_PLUS = 100
-
- end
- class Game_CharacterBase
- #--------------------------------------------------------------------------
- # ● 取得移动速度(考虑奔跑状态)(重定义)
- #--------------------------------------------------------------------------
- alias real_move_speed_8direction real_move_speed
- def real_move_speed
- if $game_variables[MOVE_CONTROL::DASH_PLUS] > 0
- dash_plus = 1 + ($game_variables[MOVE_CONTROL::DASH_PLUS] * 0.1)
- @move_speed + (dash? ? dash_plus : 0)
- else
- real_move_speed_8direction
- end
- end
- end
- class Game_Player < Game_Character
- #--------------------------------------------------------------------------
- # ● 判定奔跑状态(重定义)
- #--------------------------------------------------------------------------
- alias dash_rev? dash?
- def dash?
- return false if $game_switches[MOVE_CONTROL::DASH_SEAL] == true
- if $game_switches[MOVE_CONTROL::DASH_REV] == true
- return false if @move_route_forcing
- return false if $game_map.disable_dash?
- return false if vehicle
- return false if Input.press?(:A)
- return true
- else
- dash_rev?
- end
- end
- #--------------------------------------------------------------------------
- # ● 处理方向键输入作出的移动(重定义)
- #--------------------------------------------------------------------------
- alias move_by_input_8direction move_by_input
- def move_by_input
- return if $game_switches[MOVE_CONTROL::MOVE_SEAL_SWITCH] == true
- if $game_switches[MOVE_CONTROL::FOUR_MOVE_SWITCH] == true
- move_by_input_8direction
- return
- end
- return if !movable? || $game_map.interpreter.running?
- if Input.press?(:LEFT) && Input.press?(:DOWN)
- if passable?(@x, @y, 4) && passable?(@x, @y, 2) &&
- passable?(@x - 1, @y, 2) && passable?(@x, @y + 1, 4) &&
- passable?(@x - 1, @y + 1, 6) && passable?(@x - 1, @y + 1, 8)
- move_diagonal(4, 2)
- elsif @direction == 4
- if passable?(@x, @y, 2) && passable?(@x, @y + 1, 8)
- move_straight(2)
- elsif passable?(@x, @y, 4) && passable?(@x - 1, @y, 6)
- move_straight(4)
- end
- elsif @direction == 2
- if passable?(@x, @y, 4) && passable?(@x - 1, @y, 6)
- move_straight(4)
- elsif passable?(@x, @y, 2) && passable?(@x, @y + 1, 8)
- move_straight(2)
- else
- move_straight(Input.dir4) if Input.dir4 > 0
- end
- else
- move_straight(Input.dir4) if Input.dir4 > 0
- end
- elsif Input.press?(:RIGHT) && Input.press?(:DOWN)
- if passable?(@x, @y, 6) && passable?(@x, @y, 2) &&
- passable?(@x + 1, @y, 2) && passable?(@x, @y + 1, 6) &&
- passable?(@x + 1, @y + 1, 4) && passable?(@x + 1, @y + 1, 8)
- move_diagonal(6, 2)
- elsif @direction == 6
- if passable?(@x, @y, 2) && passable?(@x, @y + 1, 8)
- move_straight(2)
- elsif passable?(@x, @y, 6) && passable?(@x + 1, @y, 4)
- move_straight(6)
- end
- elsif @direction == 2
- if passable?(@x, @y, 6) && passable?(@x + 1, @y, 4)
- move_straight(6)
- elsif passable?(@x, @y, 2) && passable?(@x, @y + 1, 8)
- move_straight(2)
- else
- move_straight(Input.dir4) if Input.dir4 > 0
- end
- else
- move_straight(Input.dir4) if Input.dir4 > 0
- end
- elsif Input.press?(:LEFT) && Input.press?(:UP)
- if passable?(@x, @y, 4) && passable?(@x, @y, 8) &&
- passable?(@x - 1, @y, 8) && passable?(@x, @y - 1, 4) &&
- passable?(@x - 1, @y - 1, 2) && passable?(@x - 1, @y - 1, 6)
- move_diagonal(4, 8)
- elsif @direction == 4
- if passable?(@x, @y, 8) && passable?(@x, @y - 1, 2)
- move_straight(8)
- elsif passable?(@x, @y, 4) && passable?(@x - 1, @y, 6)
- move_straight(4)
- else
- move_straight(Input.dir4) if Input.dir4 > 0
- end
- elsif @direction == 8
- if passable?(@x, @y, 4) && passable?(@x - 1, @y, 6)
- move_straight(4)
- elsif passable?(@x, @y, 8) && passable?(@x, @y - 1, 2)
- move_straight(8)
- else
- move_straight(Input.dir4) if Input.dir4 > 0
- end
- else
- move_straight(Input.dir4) if Input.dir4 > 0
- end
- elsif Input.press?(:RIGHT) && Input.press?(:UP)
- if passable?(@x, @y, 6) && passable?(@x, @y, 8) &&
- passable?(@x + 1, @y, 8) && passable?(@x, @y - 1, 6) &&
- passable?(@x + 1, @y - 1, 2) && passable?(@x + 1, @y - 1, 4)
- move_diagonal(6, 8)
- elsif @direction == 6
- if passable?(@x, @y, 8) && passable?(@x, @y - 1, 2)
- move_straight(8)
- elsif passable?(@x, @y, 6) && passable?(@x + 1, @y, 4)
- move_straight(6)
- else
- move_straight(Input.dir4) if Input.dir4 > 0
- end
- elsif @direction == 8
- if passable?(@x, @y, 6) && passable?(@x + 1, @y, 4)
- move_straight(6)
- elsif passable?(@x, @y, 8) && passable?(@x, @y - 1, 2)
- move_straight(8)
- else
- move_straight(Input.dir4) if Input.dir4 > 0
- end
- else
- move_straight(Input.dir4) if Input.dir4 > 0
- end
- else
- move_straight(Input.dir4) if Input.dir4 > 0
- end
- unless moving?
- @direction = Input.dir4 unless Input.dir4 == 0
- end
- end
- end
复制代码 |
|