移動反転について

ZouGroup
記事: 11
登録日時: 2017年4月13日(木) 21:13

移動反転について

投稿記事by ZouGroup » 2018年7月08日(日) 20:07

左キーを押したら右に移動する、みたいな移動反転の状態を作りたいのですが、RGSS3のどこをどういじればいいか教えていただきたいです。

なお、条件分岐で「左が押されたとき右に移動」とすると挙動が変になるのでなやんでいます。

faida
記事: 203
登録日時: 2015年12月17日(木) 16:44

Re: 移動反転について

投稿記事by faida » 2018年7月08日(日) 20:21

こんばんは。
プレイヤーキャラの挙動については「Game_Player」の中にあります。
その中を見ていくと、そのものずばり、「方向ボタン入力による移動処理」というのがあります。

コード: 全て選択

  def move_by_input
    return if !movable? || $game_map.interpreter.running?
    move_straight(Input.dir4) if Input.dir4 > 0
  end
ここの「move_straight(Input.dir4)」というのが「キー入力に対するキャラの移動」となります。

テンキーがあれば分かりやすいとは思いますが、move_straightは数値に対してその方向に移動するメソッドです。
即ち、2が下、4が左、6が右、8が上となります。
したがって、その移動方向を逆転させるには、(10-n)の方向に移動させればいいわけです。
逆転後は8が下、6が左、4が右、2が上になればいいので、この法則は正しいことが分かります。

普通はスイッチなどで条件分岐するはずなので、適当にスイッチで条件分岐した例を提示します。

コード: 全て選択

  def move_by_input
    return if !movable? || $game_map.interpreter.running?
    if $game_switches[100]
      move_straight(10 - Input.dir4) if Input.dir4 > 0
    else
      move_straight(Input.dir4) if Input.dir4 > 0
    end
  end
ID100のスイッチがONの時、移動方向が逆転するようになるはずです。

何か不明点等ありましたら遠慮なくお申し付けください。

※持ち帰り用

コード: 全て選択

class Game_Player < Game_Character
  def move_by_input
    return if !movable? || $game_map.interpreter.running?
    if $game_switches[100]
      move_straight(10 - Input.dir4) if Input.dir4 > 0
    else
      move_straight(Input.dir4) if Input.dir4 > 0
    end
  end
end
---------------------------------------------
自作の(改造でない)スクリプト素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
ZouGroup
記事: 11
登録日時: 2017年4月13日(木) 21:13

Re: 移動反転について

投稿記事by ZouGroup » 2018年7月09日(月) 20:58

丁寧な回答ありがとうございます!

おかげさまでうまく動作しました!

クレジットにもお名前を掲載させていただきます。

本当にありがとうございました!

“VX / Ace:質問” へ戻る