RPG小游戏创建游戏中的交互 创建可交互的物体的公共的父类(Interactable) InteractableObject 类 NPCObject 类 PickableObject 类
创建可交互的物体的公共的父类(Interactable)
InteractableObject 类
using System. Collections ;
using System. Collections. Generic ;
using UnityEngine ;
using UnityEngine. AI ;
public class InteractableObject : MonoBehaviour
{ private NavMeshAgent playerAgent; private bool haveInteeacted; public void OnClick ( NavMeshAgent playerAgent) { this . playerAgent = playerAgent; playerAgent. stoppingDistance = 2 ; playerAgent. SetDestination ( transform. position) ; haveInteeacted = false ; } private void Update ( ) { if ( playerAgent != null && haveInteeacted == false && playerAgent . pathPending== false ) { if ( playerAgent. remainingDistance<= 2 ) { Interact ( ) ; haveInteeacted = true ; } } } protected virtual void Interact ( ) { print ( "Interacting with Interactable Object." ) ; }
}
NPCObject 类
using System. Collections ;
using System. Collections. Generic ;
using UnityEngine ;
public class NPCObject : InteractableObject
{ public new string name; public string [ ] contentList; protected override void Interact ( ) { DialogueUI. Instance. Show ( name, contentList) ; }
}
PickableObject 类
using System. Collections ;
using System. Collections. Generic ;
using UnityEngine ;
public class PickableObject : InteractableObject
{ public ItemScriptObject itemSO; protected override void Interact ( ) { Destroy ( this . gameObject) ; InventoryManager. Instance. AddItem ( itemSO) ; }
}