Project1
标题:
ACE有没有伪·八方向行走的脚本?
[打印本页]
作者:
1243852
时间:
2012-9-25 20:09
标题:
ACE有没有伪·八方向行走的脚本?
本帖最后由 1243852 于 2012-9-26 19:09 编辑
求伪·八方向行走的脚本,就是用四方向行走图斜着走的脚本。
作者:
chxush
时间:
2012-9-25 22:25
有
#==============================================================================
# ■8方向移动 for RGSS3 Ver1.01 by 星潟
#
# 功能: 1.可以设置角色往8方向移动.
# 2.可以设置关于移动的一部分功能.
#==============================================================================
# 使用说明:
# ★通过开关操作切换8方向移动的ON/OFF和能够设置一切移动的禁止.
# ★根据开关操作调转奔跑判定键.
# ★根据变量操作实行奔跑速度的强化.
# ★根据开关切换追加奔跑禁止功能.
#
#==============================================================================
module MOVE_CONTROL
#--------------------------------------------------------------------------
# ● 基本设置(新增定义)
#--------------------------------------------------------------------------
# 这个开关ON的时候禁止8方向移动,只能4方向移动
FOUR_MOVE_SWITCH = 41
# 这个开关ON的时候禁止操作角色
MOVE_SEAL_SWITCH = 42
# 这个开关ON的时候调转奔跑判定键
# 平时奔跑时按下奔跑键的状态变成通常行走
DASH_REV = 43
# 这个开关ON的时候奔跑不能使用
# 开关切换使同一地图能够奔跑的场所和不能奔跑的场所区别开来
DASH_SEAL = 44
# 这个变量比0大的时候奔跑速度会再次增加
DASH_PLUS = 15
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
复制代码
作者:
咕噜
时间:
2012-9-26 13:36
#==============================================================================
# ■ VXAce-RGSS3-26 8方向移動 [Ver.1.0.0] by Claimh
#------------------------------------------------------------------------------
# 8方向の移動が可能となります。
# 斜め移動ができない時に縦or横に移動できる場合は縦or横に移動するようになります。
#==============================================================================
class Game_Player < Game_Character
#--------------------------------------------------------------------------
# ● 方向ボタン入力による移動処理
#--------------------------------------------------------------------------
def move_by_input
return if !movable? || $game_map.interpreter.running?
if [1, 3, 7, 9].include?(Input.dir8)
case Input.dir8
when 1; move_diagonal(4, 2)
when 3; move_diagonal(6, 2)
when 7; move_diagonal(4, 8)
when 9; move_diagonal(6, 8)
end
return if @move_succeed
end
move_straight(Input.dir4) if Input.dir4 > 0
end
end
class Game_CharacterBase
#--------------------------------------------------------------------------
# ● 斜めに移動
# horz : 横方向(4 or 6)
# vert : 縦方向(2 or 8)
#--------------------------------------------------------------------------
alias move_diagonal_8dir move_diagonal
def move_diagonal(horz, vert)
if !passable?(@x, @y, horz) and !passable?(@x, @y, vert)
@move_succeed = false
return
end
return move_straight(horz) if passable?(@x, @y, horz) and !passable?(@x, @y, vert)
return move_straight(vert) if !passable?(@x, @y, horz) and passable?(@x, @y, vert)
move_diagonal_8dir(horz, vert)
end
end
复制代码
嗯哼 ?
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1