現在2DRPGを制作しているのですが、アイテムショップや鍛冶屋などには、その店と主となるNPCを配置する必要があります。
私の場合は、NPCに接触したら、コライダの判定によってFungusの会話イベントを実行し、その後アイテムリスト等のコマンドを開くようにしています。
今回は、その際にNPCにRigidbody2Dコンポーネントをアタッチしている場合の挙動について設定により違いがあるのでまとめておきます。
2DRPGの「Dynamic」と「Kinematic」の違い【Unity】
NPCオブジェクトにRigidbody2Dコンポーネントをアタッチすると、「Body Type」という項目があります。
Dynamicに設定した場合のNPCの挙動
Dynamicの場合は、Gravity Scaleの値を0にしています。
この設定がDynamicの場合、当たり判定発生後にそのままNPC方向にプレイヤーが進もうとすると、相撲の決まり手である押し出しのように、NPCが移動してしまいます。
これは、物理演算がオブジェクトに対して有効になっているから当然なんですが、放っておいたらゲームとして非常によろしくないですよね。
いちいち店を出て入りなおすみたいな事をやらないといけない事になりますし・・・。
Kinematicに設定した場合のNPCの挙動
一方、Kinematicに変更した場合は、ご覧の様にびくともしません。
2DRPGで、村人等をその場から移動させたくない場合は、Kinematicにしておくと良いでしょう。
ちなみに、Staticにした場合は、アニメーションの再生は行われますが、その場を適当に歩き回るような動作が出来なくなりますので気を付けましょう。
ただ、処理の軽さではStaticが一番優秀なので、時と場合によって使い分けるようにしてください。