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

いおん
記事: 27
登録日時: 2020年5月18日(月) 23:57

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

投稿記事by いおん » 2023年12月20日(水) 20:35

プレイヤーが接触した時ではなく、接触しているときに並列実行するイベントを作りたいです。
どなたかよろしくお願いいたします。
最後に編集したユーザー いおん on 2023年12月21日(木) 20:17 [ 編集 1 回目 ]

アバター
工作員X
記事: 15
登録日時: 2023年9月02日(土) 13:46
連絡を取る:

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

投稿記事by 工作員X » 2023年12月21日(木) 09:15

プレイヤーと隣接している時に実行するイベントであれば、以下の様にして作れます。

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

コード: 全て選択

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マス以上離れていなければ実行、としているだけです。
スパイじゃなくてクラフターだっ!
RGSS3の素材とか作ってます。
https://under-overworld.hatenablog.jp/entry/rgss3-material
いおん
記事: 27
登録日時: 2020年5月18日(月) 23:57

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

投稿記事by いおん » 2023年12月21日(木) 20:17

イメージ通りに出来ました!!
工作員X様、どうもありがとうごさいます!!

“VX / Ace:質問” へ戻る