Creation Manual

RPGマップ NPC

素材の準備

キャラチップ素材の規格

RPGツクール規格の素材をそのまま使用することができます
画像サイズは4の倍数になるようにしてください (半端なサイズの場合は右下に余白を入れる)
チップのサイズに制約はありませんが、各チップのサイズは統一してください
1つの画像に複数種類のキャラを並べる事ができます
キャラの向きは単方向、2方向、4方向、8方向の4種類が仕様できます

素材画像のインポートとスプライトの設定

素材画像を Assets/AssetBundles/Maps/Character/Sprites フォルダにドラッグ&ドロップしてください
次に、追加した画像を選択してインスペクターから以下の項目を設定してください
設定が完了したら『Apply』ボタンを押して変更を確定してください
TextureTypeSprite (2D and UI)
SpriteModeMultiple
PixcelsPerUnit32
GeneratePhysicsShapeOff
FilterModePoint (no filter)
CompressionHighQuarity

次に『SpriteEditor』ボタンを押してスプライト編集画面を開いてください
編集画面よりメニューバーの『Slice』をクリックして以下の項目を設定してください
値を設定したら左下の『Slice』ボタンをクリックしてください
最後に『Apply』ボタンをクリックしてください
※ 画像に余白を入れている場合は Type を GridByCellSize にしてサイズ指定を使用してください
TypeGrid By Cell Count
Column & Row水平個数と垂直個数
PivotBottom Center

キャラクターシートの作成

キャラクターシートの作成

Assets/AssetBundles/Maps/Character/DirectionalAnimation フォルダで右クリックメニューを開いて

Create -> RpgMapEditor -> DirectionAnimationController
を選択してください
追加されたファイル(New DirectionalAnimationController)を管理しやすい名前にリネームしてください (半角英数字)

インスペクターを開き Animations 部分の「Drag a sprite sheet into ...」と書かれた部分に上で作成した素材画像をドラッグ&ドロップしてください
ドラッグ&ドロップを繰り返せば複数の素材画像を設定することも出来ます
チップが追加されたらそれぞれキャラ名を設定してください
リスト横の『〓』部分をドラッグすることで順番を入れ替える事ができます
不要なチップは選択した状態で右下の『-』ボタンを押せば削除できます

服装や状態が変化するキャラについて

着衣とヌードが切替わるようなキャラの場合は全ての状態をキャラクターシートに含める必要があります
キャラクターシート内に無いものはスクリプト等から切替えることができなくなる点に注意してください

NPCプレハブの作成

NPCプレハブの作成

Assets/AssetBundles/Maps/Character フォルダ内の適当なNPCプレハブをコピーしてください
コピーしたプレハブのファイル名をキャラクター名にリネームしてください (半角英数字)
プレハブをダブルクリックで開き以下のプロパティーを設定してください
DirAnimCtrl上で作成したキャラクターシートをドラッグ&ドロップ
PlayModePingPong (3フレーム アニメーションの場合)
AnimationSpeed1タイル移動するときのアニメーションフレーム数
StopFrameIndex1 (3フレーム アニメーションの場合)

NPCの設置

NPCの設置

マップシーン内の RpgMap/NPC オブジェクトの子になるようにNPCプレハブをドラッグ&ドロップで追加してください
必要に応じて追加したプレハブ オブジェクトの名前を調整してください
移動ツールで設置したい場所に移動させてください

NPCの挙動

挙動の設定

インスペクターの Behaviour プロパティからNPCの挙動を変更することができます

RandomMove ランダムに移動します
ApproachPlayer プレーヤーとの距離が近くなるとプレーヤーを追跡しようとします
プレーヤーとの距離が離れているときはランダムに移動します
但し、RandomMove と違い移動可能半径は指定できず、移動可能な場所なら何処へでも移動します

追跡時はプレーヤーに向かって直線で移動しようとします
障害物は考慮せずに動くため地形によっては障害物に嵌る事があります
LeavePlayer プレーヤーとの距離が近くなるとプレーヤーから逃げようとします
プレーヤーとの距離が離れているときはランダムに移動します
但し、RandomMove と違い移動可能半径は指定できず、移動可能な場所なら何処へでも移動します

追跡時はプレーヤーに向かって直線で移動しようとします
障害物は考慮せずに動くため地形によっては障害物に嵌る事があります
TurnCW その場で時計回りに回転します
TurnCCW その場で反時計回りに回転します
TurnHorizontal その場で左右に方向転換を繰り返します
TurnVertical その場で前後に方向転換を繰り返します
Stay その場で待機し何もしません
RestoreDirection その場で待機し何もしません。Stay とは違いプレーヤーが話しかけるとプレーヤーの方向を向きますが、会話が終わると初期方向へ向きを戻します
FixedDirection その場で待機し何もしません。プレーヤが話しかけてもプレーヤーの方向を向きません

挙動パラメータ

挙動ごとに使用するパラメータは異なります
挙動と関連するパラメータは以下のとおりです

パラメータ RandomMove ApproachPlayer LeavePlayer TurnCW TurnCCW TurnHorizontal TurnVertical Stay RestoreDirection FixedDirection 説明
IsForceStepping 立ち止まっている最中も脚踏むアニメーションを続けるか
MoveRadius × × × × × × × × × 初期位置を中心とした移動可能な半径 (タイル単位)
MoveSpeed × × × × × × × 秒間移動タイル数。挙動タイプが ApproachPlayer 又は LeavePlayer の場合、プレーヤーを発見してない時の移動速度となる
StopTime × × × 移動後、又は、方向転換後の停止時間。min ~ max の間のランダムな秒数で待機する
SertchDistance × × × × × × × × プレーヤーを発見する距離 (タイル単位)
MoveSpeedAtFund × × × × × × × × プレーヤーや発見しているときの秒間移動タイル数
StopTimeAtFound × × × × × × × × プレーヤーを発見しているときの移動後停止時間。min ~ max の間のランダムな秒数で待機する
ForeverUpdate × × × イベント中(ADV再生中など)も行動を続行するか

NPCイベント(スクリプト)の設定

NPCイベントの種類

NPCは2種類のイベントがあります
アクション イベント プレーヤーがNPCに向かってアクションボタンを押したときに発生するイベント
接触イベント プレーヤーとNPCが接触した時に発生するイベント。移動系のNPCの場合はプレーヤーが立ち止まっているときでもこのイベントが発生することがあります
※ 接触とはプレーヤーとNPCが同じタイルに入ろうとした瞬間をいいます。隣に立つだけでは接触にはなりません

イベントの設定

NPCにイベントを設定するにはインスペクターから実行させるスクリプトのパスを設定します
アクション イベントの場合は ActionScript プロパティーにパスを設定してください
接触イベントの場合は TouchedScript プロパティーにパスを設定してください
StopTimeOnTouched に 0 以上の値を設定すると接触イベント終了後に指定した秒数その場で待機します
挙動タイプに ApproachPlayer を使用しているときに連続でイベントが発生するのを防ぐときに使用します

TOP