ページ 11

解決済み:[Ace]接触している時に実行し続けるイベント

Posted: 2023年12月20日(水) 20:35
by いおん
プレイヤーが接触した時ではなく、接触しているときに並列実行するイベントを作りたいです。
どなたかよろしくお願いいたします。

Re: [Ace]接触している時に実行し続けるイベント

Posted: 2023年12月21日(木) 09:15
by 工作員X
プレイヤーと隣接している時に実行するイベントであれば、以下の様にして作れます。

まず下のスクリプトをスクリプトエディタに貼り付けてください。

コード: 全て選択

class Game_Character < Game_CharacterBase
  def neighbor?(character, distance = 1)
    dx = (@x - character.x).abs
    dx = $game_map.width - dx if $game_map.loop_horizontal? && dx > $game_map.width / 2
    dy = (@y - character.y).abs
    dy = $game_map.height - dy if $game_map.loop_vertical? && dy > $game_map.height / 2
    dx + dy <= distance
  end
end

そしてイベントに条件分岐を追加し、以下のスクリプトを設定します。
(イベントトリガーは並列処理に設定)

コード: 全て選択

$game_player.neighbor?($game_map.events[イベントID])

[]内は隣接判定を取るイベントのIDを指定します。

仕組みとしては単純にプレイヤーとイベントとの距離を計算して、
1マス以上離れていなければ実行、としているだけです。

Re: 解決済み:[Ace]接触している時に実行し続けるイベント

Posted: 2023年12月21日(木) 20:17
by いおん
イメージ通りに出来ました!!
工作員X様、どうもありがとうごさいます!!