椅子に座る表現について

SLT_R03
記事: 12
登録日時: 2021年9月02日(木) 14:41

椅子に座る表現について

投稿記事by SLT_R03 » 2022年9月11日(日) 21:11

VXAceを使っています。
「決定キーで椅子に座り、座ってる間は主人公の向きと動きを固定し、再び決定キーを押すと椅子から降りて向きと動きの固定を解除する」
という流れで椅子に座る表現を作ろうとしています。座って向きを固定する所までは上手く行ったのですが、座ってる途中に方向キーを押すと座ったまま主人公が上下左右に動いてしまいます(=動きを固定できません)。
そこでスクリプト「$game_player.nonmovable = true」を使って動きを止めたのですが、そうすると決定キーの入力も受け付けなくなり何もできなくなります。

なので、座ってる間はマップタイルを変更して周囲一マスを無理矢理通行不可にして一応は成功したのですが冗長のような気がしています。何より長椅子(縦または横に2マス以上ある椅子)では同様の処理はできません。
上記のような動き“のみ”を止めて決定キーの入力は受け付ける処理、またはもっと椅子に座るのに適している処理などがあればご教授願います

名無し蛙
記事: 302
登録日時: 2015年11月23日(月) 02:46

Re: 椅子に座る表現について

投稿記事by 名無し蛙 » 2022年9月11日(日) 22:21

そんなのあったっけっと思ったんですけどこちらのスクリプトを使用しているんですね?

movable?は方向キー入力と乗り物乗降・イベント決定判定の二ヶ所で使われてるので
どうせフラグを作るなら前者だけ封じた方が良いでしょうね

コード: 全て選択

class Game_Player < Game_Character
  attr_accessor :nonmovable
  #--------------------------------------------------------------------------
  # ○ 方向ボタン入力による移動処理
  #--------------------------------------------------------------------------
  alias :_old_move_by_input :move_by_input
  def move_by_input
    return if nonmovable
    _old_move_by_input
  end
end
SLT_R03
記事: 12
登録日時: 2021年9月02日(木) 14:41

Re: 椅子に座る表現について

投稿記事by SLT_R03 » 2022年9月11日(日) 23:05

>名無し蛙さん
使わせて頂いたところ、無事に思っていた処理が実現できました。
ありがとうございます!

“VX / Ace:質問” へ戻る