赞 | 0 |
VIP | -1 |
好人卡 | 0 |
积分 | 1 |
经验 | 329224 |
最后登录 | 2016-9-9 |
在线时间 | 5 小时 |
Lv1.梦旅人 NewS-
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 5 小时
- 注册时间
- 2005-10-23
- 帖子
- 3651
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
[概要]
上下キーと左右キーを同時押しすることにより、斜め移動を可能にします。
先頭キャラクターに斜め移動時の画像が用意されている場合は、それを使用して表示します。
イベントコマンド「移動ルートの設定」での斜め方向指定にも対応しています。
- #==============================================================================
- # ++ グラフィック変更8方向移動 ver. 1.01 ++
- # Script by パラ犬
- # http://para.j-mx.com/
- #------------------------------------------------------------------------------
- # 上下キーと左右キーを同時押しすることにより斜め移動を可能にし、
- # 「Graphics/Characters」フォルダに
- # 「(先頭キャラクター名)+_quarter」という名前のファイルがある場合
- # 斜め移動時のグラフィックとして使用します。(例:001-Fighter01_quarter)
- #------------------------------------------------------------------------------
- #[設置上の注意]
- # 「グラフィック変更ダッシュ」と併用する場合、このスクリプトを
- # ダッシュスクリプトよりも下に置いてください。
- # 斜め方向ダッシュの画像ファイル名は「(先頭キャラクター名)+_dash_quarter」に
- # なります。
- #==============================================================================
- #==============================================================================
- # ■ Game_Player
- #==============================================================================
- class Game_Player < Game_Character
- #--------------------------------------------------------------------------
- # ● フレーム更新
- #--------------------------------------------------------------------------
- alias update_para_quarter update
- def update
- update_para_quarter
- unless moving? or $game_system.map_interpreter.running? or
- @move_route_forcing or $game_temp.message_window_showing
- # 方向ボタンが押されていれば、その方向へプレイヤーを移動
- case Input.dir8
- when 1 # 左下に移動
- move_lower_left
- when 3 # 右下に移動
- move_lower_right
- when 7 # 左上に移動
- move_upper_left
- when 9 # 右上に移動
- move_upper_right
- end
- end
- end
- end
- #==============================================================================
- # ■ Sprite_Character
- #==============================================================================
- class Sprite_Character < RPG::Sprite
- #--------------------------------------------------------------------------
- # ● フレーム更新
- #--------------------------------------------------------------------------
- alias update_para_quarter update
- def update
- update_para_quarter
- if @tile_id == 0
- if (@character.direction - 2) % 2 == 1
- # 斜め画像の有無をチェック
- if quarter_graphic_exist?(@character)
- # 斜め画像をセット
- if character.dash_on and dash_quarter_graphic_exist?(@character)
- @character_name = @character.character_name + "_dash_quarter"
- else
- @character_name = @character.character_name + "_quarter"
- end
- self.bitmap = RPG::Cache.character(@character_name,
- @character.character_hue)
- # 向きを取得
- case @character.direction
- when 1
- n = 0
- when 3
- n = 2
- when 7
- n = 1
- when 9
- n = 3
- end
- else
- @character.direction = @character.sub_direction
- # 斜め画像が存在しないときの向き
- n = (@character.direction - 2) / 2
- end
- # 転送元の矩形を設定
- sx = @character.pattern * @cw
- sy = n * @ch
- self.src_rect.set(sx, sy, @cw, @ch)
- else
- self.bitmap = RPG::Cache.character(@character.character_name,
- @character.character_hue)
- # 転送元の矩形を設定
- sx = @character.pattern * @cw
- sy = (@character.direction - 2) / 2 * @ch
- self.src_rect.set(sx, sy, @cw, @ch)
- end
- end
- end
- #--------------------------------------------------------------------------
- # ○ 斜め画像の有無をチェック
- #--------------------------------------------------------------------------
- def quarter_graphic_exist?(character)
- # 読み込みテスト
- begin
- RPG::Cache.character(character.character_name.to_s + "_quarter", character.character_hue)
- rescue
- return false
- end
- return true
- end
- #--------------------------------------------------------------------------
- # ○ 斜めダッシュ画像の有無をチェック
- #--------------------------------------------------------------------------
- def dash_quarter_graphic_exist?(character)
- # 読み込みテスト
- begin
- RPG::Cache.character(character.character_name.to_s + "_dash_quarter", character.character_hue)
- rescue
- return false
- end
- return true
- end
- end
- #==============================================================================
- # ■ Game_Character
- #==============================================================================
- class Game_Character
- #--------------------------------------------------------------------------
- # ● 公開インスタンス変数
- #--------------------------------------------------------------------------
- attr_accessor :direction # 向き
- attr_accessor :sub_direction # 斜め画像が存在しないときの向き
- #--------------------------------------------------------------------------
- # ● 左下に移動
- #--------------------------------------------------------------------------
- def move_lower_left
- # 向き固定でない場合
- unless @direction_fix
- @sub_direction = @direction
- @direction = 1
- # 右向きだった場合は左を、上向きだった場合は下を向く
- @sub_direction = (@sub_direction == 6 ? 4 : @sub_direction == 8 ? 2 : @sub_direction)
- end
- # 下→左、左→下 のどちらかのコースが通行可能な場合
- if (passable?(@x, @y, 2) and passable?(@x, @y + 1, 4)) or
- (passable?(@x, @y, 4) and passable?(@x - 1, @y, 2))
- # 座標を更新
- @x -= 1
- @y += 1
- # 歩数増加
- increase_steps
- end
- end
- #--------------------------------------------------------------------------
- # ● 右下に移動
- #--------------------------------------------------------------------------
- def move_lower_right
- # 向き固定でない場合
- unless @direction_fix
- @sub_direction = @direction
- @direction = 3
- # 左向きだった場合は右を、上向きだった場合は下を向く
- @sub_direction = (@sub_direction == 4 ? 6 : @sub_direction == 8 ? 2 : @sub_direction)
- end
- # 下→右、右→下 のどちらかのコースが通行可能な場合
- if (passable?(@x, @y, 2) and passable?(@x, @y + 1, 6)) or
- (passable?(@x, @y, 6) and passable?(@x + 1, @y, 2))
- # 座標を更新
- @x += 1
- @y += 1
- # 歩数増加
- increase_steps
- end
- end
- #--------------------------------------------------------------------------
- # ● 左上に移動
- #--------------------------------------------------------------------------
- def move_upper_left
- # 向き固定でない場合
- unless @direction_fix
- @sub_direction = @direction
- @direction = 7
- # 右向きだった場合は左を、下向きだった場合は上を向く
- @sub_direction = (@sub_direction == 6 ? 4 : @sub_direction == 2 ? 8 : @sub_direction)
- end
- # 上→左、左→上 のどちらかのコースが通行可能な場合
- if (passable?(@x, @y, 8) and passable?(@x, @y - 1, 4)) or
- (passable?(@x, @y, 4) and passable?(@x - 1, @y, 8))
- # 座標を更新
- @x -= 1
- @y -= 1
- # 歩数増加
- increase_steps
- end
- end
- #--------------------------------------------------------------------------
- # ● 右上に移動
- #--------------------------------------------------------------------------
- def move_upper_right
- # 向き固定でない場合
- unless @direction_fix
- @sub_direction = @direction
- @direction = 9
- # 左向きだった場合は右を、下向きだった場合は上を向く
- @sub_direction = (@sub_direction == 4 ? 6 : @sub_direction == 2 ? 8 : @sub_direction)
- end
- # 上→右、右→上 のどちらかのコースが通行可能な場合
- if (passable?(@x, @y, 8) and passable?(@x, @y - 1, 6)) or
- (passable?(@x, @y, 6) and passable?(@x + 1, @y, 8))
- # 座標を更新
- @x += 1
- @y -= 1
- # 歩数増加
- increase_steps
- end
- end
- #--------------------------------------------------------------------------
- # ○ ダッシュスクリプト導入判定
- #--------------------------------------------------------------------------
- def dash_on
- if @dash_on != nil
- return @dash_on
- else
- return false
- end
- end
- end
复制代码
[使う前に]
斜め移動時の画像を用意し、「(キャラクターの歩行グラフィック名)+_quarter」という名前をつけて
「Graphics/Characters」フォルダにインポートします。
画像がなくても、8方向移動機能は使用可能です。
サンプル:
RTP素材「001-Fighter01」斜め画像
(右クリック→「名前を付けて画像を保存」でダウンロード)
[併用について]
スクリプト「グラフィック変更ダッシュ」と併用する場合、
このスクリプトをダッシュスクリプトよりも下に置いてください。
斜め方向ダッシュの画像ファイル名は、「(先頭キャラクター名)+_dash_quarter」になります。
[更新履歴]
2005/10/1 ver.1.01
イベントキャラクターの斜め移動でエラーが出る問題を修正。
2005/9/9 ver.1.00
公開。
[本贴由 柳柳 于 2006-6-8 17:29:56 最后编辑] |
|