以前(http://tohohjk.blog.shinobi.jp/Entry/22/)に少し触れましたが、移動ルートの「スクリプト」は非常に便利です。
イベントコマンドから呼び出すことも出来ますが、自律移動タイプのカスタムから呼び出せる点に注目すべきです。
これはつまり、特殊な移動方法を行わせたいイベントなんかがある場合は、外部からイベントコマンドで「移動ルートの設定」によって操作しなくても、それ用のメソッドを作ってしまって、移動タイプのカスタムから指定してやれば良いのです。
たとえば、氷雪世界の途中に出てくるこの敵シンボル。
こいつは、プレイヤーの近くに定期的にワープで接近してきますが、どうやって動いているかというと、以下の様になってます。
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のマスにのみワープが可能です。(未指定の場合は制限なし)
イベントコマンドから呼び出すことも出来ますが、自律移動タイプのカスタムから呼び出せる点に注目すべきです。
これはつまり、特殊な移動方法を行わせたいイベントなんかがある場合は、外部からイベントコマンドで「移動ルートの設定」によって操作しなくても、それ用のメソッドを作ってしまって、移動タイプのカスタムから指定してやれば良いのです。
たとえば、氷雪世界の途中に出てくるこの敵シンボル。
こいつは、プレイヤーの近くに定期的にワープで接近してきますが、どうやって動いているかというと、以下の様になってます。
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
トラックバック
トラックバックURL: