ページ 11

移動反転について

Posted: 2018年7月08日(日) 20:07
by ZouGroup
左キーを押したら右に移動する、みたいな移動反転の状態を作りたいのですが、RGSS3のどこをどういじればいいか教えていただきたいです。

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

Re: 移動反転について

Posted: 2018年7月08日(日) 20:21
by faida
こんばんは。
プレイヤーキャラの挙動については「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

Re: 移動反転について

Posted: 2018年7月09日(月) 20:58
by ZouGroup
丁寧な回答ありがとうございます!

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

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

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