忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。




2024/11/22 20:43 |
移動ルートの拡張
以前(http://tohohjk.blog.shinobi.jp/Entry/22/)に少し触れましたが、移動ルートの「スクリプト」は非常に便利です。

イベントコマンドから呼び出すことも出来ますが、自律移動タイプのカスタムから呼び出せる点に注目すべきです。
これはつまり、特殊な移動方法を行わせたいイベントなんかがある場合は、外部からイベントコマンドで「移動ルートの設定」によって操作しなくても、それ用のメソッドを作ってしまって、移動タイプのカスタムから指定してやれば良いのです。
warp_to_player_1.PNG






たとえば、氷雪世界の途中に出てくるこの敵シンボル。
こいつは、プレイヤーの近くに定期的にワープで接近してきますが、どうやって動いているかというと、以下の様になってます。
warp_to_player_2.PNG






Game_Characterに warpto_player というメソッドを作り、40フレーム毎にそれを呼び出す、かなりシンプルな移動パターンです。

これの詳しい内容は、以下の通り


class Game_Character
  #--------------------------------------------------------------------------
  # ● プレイヤーの周囲に移動
  #     distance : ワープ地点散開範囲。デフォルトで3
  #     terrain_tag : ワープさせる位置の地形タグ。デフォで制限なし
  #--------------------------------------------------------------------------
  def warpto_player(distance = 3 ,terrain_tag = nil)
    x = $game_player.x
    y = $game_player.y
    a = rand(10)
    if a % 2 == 0
      x += rand(distance) + 1
    else
      x -= rand(distance) + 1
    end
    if a >= 5
      y += rand(distance) + 1
    else
      y -= rand(distance) + 1
    end
    if terrain_tag != nil
      if $game_map.terrain_tag(x, y) == terrain_tag
        Audio.se_play("Audio/SE/020-Teleport03", 80, 100)
        moveto(x,y)
      else
        return
      end
    else
      Audio.se_play("Audio/SE/020-Teleport03", 80, 100)
      moveto(x,y)
    end
  end
end


これをスクリプトエディタに貼り付けて、後は移動ルートの設定から「スクリプト」で warpto_player と記述すれば、世にも鬱陶しい、離れてもワープで追いかけて来る敵シンボルの出来上がりです。
warpto_player(6,4) という感じで、後ろに引数を2つまで指定できます。
1つめは、ワープでの出現地点の範囲の広さ。
これが小さくなるほど、プレイヤーの位置を正確に狙ってワープします。(未指定の場合は3)
2つめは、ワープでの出現位置に地形タグを条件としたい場合の指定。
たとえば4の場合は、地形タグが4のマスにのみワープが可能です。(未指定の場合は制限なし)
PR

2009/06/16 17:21 | Comments(0) | TrackBack() | テクニック

トラックバック

トラックバックURL:

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<Part22アップ | HOME | Part21アップ>>
忍者ブログ[PR]