refactor(Facility): 使用继承让所有机关都拥有了独自的 可交互 可编辑 可连接设定。大面积重构
This commit is contained in:
58
Assets/Script/Gameplay/Facility/DoorInteractController.cs
Normal file
58
Assets/Script/Gameplay/Facility/DoorInteractController.cs
Normal file
@@ -0,0 +1,58 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Script.Gameplay.Player;
|
||||
using UnityEngine;
|
||||
using Script.Gameplay.Interface;
|
||||
using Script.Gameplay.Connect;
|
||||
|
||||
namespace Script.Gameplay.Facility
|
||||
{
|
||||
public class DoorInteractController : BaseFacilityController
|
||||
{
|
||||
private bool isOpened = false;
|
||||
public override string GetInteractPrompt()
|
||||
{
|
||||
return "按F进行交互";
|
||||
}
|
||||
|
||||
public override void Interact(GameObject interactor)
|
||||
{
|
||||
if (isOpened)
|
||||
{
|
||||
CloseDoor();
|
||||
isOpened = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
OpenDoor();
|
||||
isOpened = true;
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnGazeEnter(GameObject go)
|
||||
{
|
||||
// 可扩展:门被注视时的逻辑
|
||||
}
|
||||
|
||||
public override void OnGazeExit(GameObject go)
|
||||
{
|
||||
// 可扩展:门离开注视时的逻辑
|
||||
}
|
||||
|
||||
private void OpenDoor()
|
||||
{
|
||||
transform.rotation = Quaternion.Euler(transform.rotation.eulerAngles + new Vector3(0, -90, 0));
|
||||
}
|
||||
|
||||
private void CloseDoor()
|
||||
{
|
||||
transform.rotation = Quaternion.Euler(transform.rotation.eulerAngles + new Vector3(0, 90, 0));
|
||||
}
|
||||
|
||||
|
||||
public override void OnSignalReceived(bool active, GameObject sender)
|
||||
{
|
||||
Interact(sender);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user