ミニマムブロック

頭の中でつながるまで

simple RPG #2

①キューブオブジェクトを作成→NPCとソードを作成

②intaractableスクリプトを作成

③NavMashAgentを作成

④worldInteractableのdebug.log("Interactable object")をinteractableObject.GetComponent<Interactable>

 

ざっくりまとめ:

intaractableスクリプトNPC, ソードにアタッチ

this.playerAgentはアタッチされたキューブやソード

intaractableにタッチした場合、オブジェクトを取得、そのオブジェクトのメソッドを呼び出す形にした。

主人公にはworldInteractableをアタッチ、objectにタッチした場合の処理を記述。

objectにタッチ→objectを取得、メソッドを呼び出し、主人公オブジェクトを渡す。

 

NPCとItemにあたったとき、食いこまずに止まるようにしようよ

playerStopping = 3f;を追加。intaractableObjectに

inspectorで加速accelerationとspeedお調整?

 

ActionItemを作成

 

virtualとoverride

スーパークラスのメソッドにはvirtual

サブクラスのメソッドにはoverrideをつけるとメソッド継承ができる!

 

MoveToInteraction(NavMeshAgent playerAgent)?

なぜMoveToInteraction?

Interaction処理を行いますよ、という意味か。

 

GetComponenct<Interactable>

公式:GetComponenct<コンポーネント>

コンポーネント:オブジェクトが持っているもの。特徴すべて?

つまり、Interactableスクリプトを取得するという意味か。

だから、GetComponenct<Interactable>().MoveToInteraction(playerAgent);

を行える。

 

public class NPC : MonoBehavior{}?

public class クラス名 : 派生元 {}

MonoBehavior, Unityでの基本単位?

 

やったこと

NPCとinteractできるようにする

②itemとinteractできるようにする

③singとinteractできるようにする

 

やりかた

①interactableスクリプトを作成

NPCクラスはinteractableスクリプトを継承

NPCをキューブにアタッチ

④タグをNPCに設定

 

①worldInteractionでクリックを受ける、Rayとかでポイントを計算。worldInteractionはplayerにアタッチ。navMesh, タグ,

②もしクリック先がinteractable objectなら、interactable objectまで移動(moveToInteraction(player))して、interact()する

interact()はオブジェクトに応じたスクリプトの中で、overrideされているので、

スクリプトをそれぞれのオブジェクトに張り付けると、オブジェクトごとの振る舞いをする。

クリック先がinteractable objectでない場合は、その場所まで移動するだけ。