2021-07-01 23:35:25 +08:00
|
|
|
|
using System.Collections;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
using UnityEngine.UI;
|
|
|
|
|
|
|
|
|
|
public class Interactive : MonoBehaviour
|
|
|
|
|
{
|
2021-07-04 01:00:01 +08:00
|
|
|
|
//这是所有可交互物体的基类
|
|
|
|
|
public GameObject m_interface;//可交互物体一般都和一个UI界面挂钩,这就是那个UI界面
|
2021-07-01 23:35:25 +08:00
|
|
|
|
|
2021-07-04 01:00:01 +08:00
|
|
|
|
//这是一对碰撞检测代码。当玩家进入,将自身传给玩家。当玩家退出,把玩家的catch清空
|
2021-07-01 23:35:25 +08:00
|
|
|
|
void OnTriggerEnter2D(Collider2D other)
|
|
|
|
|
{
|
|
|
|
|
if(other.tag == "Player")
|
|
|
|
|
{
|
|
|
|
|
other.GetComponent<M_Player>().catched = this;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
void OnTriggerExit2D(Collider2D other)
|
|
|
|
|
{
|
|
|
|
|
if(other.tag == "Player")
|
|
|
|
|
{
|
2021-08-15 01:32:33 +08:00
|
|
|
|
//如果目前退出当前交互区域的时候,玩家的捕捉物体是自己,才把玩家的捕捉清空。否则说明玩家在推出前就捕捉到了新的
|
|
|
|
|
//对象。这样是用来解决排布密集的可交互物体的问题
|
|
|
|
|
if(other.GetComponent<M_Player>().catched == this) other.GetComponent<M_Player>().catched = null;
|
2021-07-01 23:35:25 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
2021-07-04 01:00:01 +08:00
|
|
|
|
//
|
2021-07-01 23:35:25 +08:00
|
|
|
|
|
2021-07-04 01:00:01 +08:00
|
|
|
|
//当这个可交互物体被玩家交互。一般需要重写这个函数。
|
|
|
|
|
public virtual void OnCall(){}
|
|
|
|
|
//
|
2021-07-01 23:35:25 +08:00
|
|
|
|
|
2021-07-04 01:00:01 +08:00
|
|
|
|
//以下为针对各具体可交互对象的虚拟函数,在具体物体中重写
|
2021-08-18 00:50:19 +08:00
|
|
|
|
public virtual void Coding(string temp){}//电报机的打码
|
|
|
|
|
public virtual void StopRepareTheTelephoneLine(){}//电话线的停止修复(松开按键检测
|
|
|
|
|
public virtual void Quit(){}//任务书的关闭
|
2021-08-25 02:21:59 +08:00
|
|
|
|
public virtual void Comfirm(){}//修复电报机界面按下交互键触发
|
2021-08-25 16:47:03 +08:00
|
|
|
|
public virtual void ChangeHandleTo(bool isDown){}
|
2021-07-04 01:00:01 +08:00
|
|
|
|
//
|
2021-07-01 23:35:25 +08:00
|
|
|
|
}
|