feat(): 实现EditComponent的UI基础,引入TextMeshPro,添加了在Inside状态下不能互动物体的逻辑控制

This commit is contained in:
2025-10-18 11:00:06 +08:00
parent 2614dab342
commit b4f229d29e
85 changed files with 13841 additions and 51 deletions

View File

@@ -11,6 +11,7 @@ namespace Gameplay.Player
[SerializeField] private LayerMask interactableLayer;
[SerializeField] private Camera playerCamera;
[SerializeField] private bool isDrawGizmos;
[SerializeField] private bool isEnablePlayerInteraction = true; // 是否启用玩家交互功能
private IInteractable currentTarget; // 被射线命中的当前可交互对象(用于按键交互)
private IInteractable previousGazedTarget; // 上一次注视的对象(用于注视进入/离开事件)
@@ -38,6 +39,7 @@ namespace Gameplay.Player
void DetectInteractable()
{
if (playerCamera == null) return;
if (!isEnablePlayerInteraction) return;
Ray ray = new Ray(playerCamera.transform.position, playerCamera.transform.forward);
if (Physics.Raycast(ray, out RaycastHit hit, interactRange, interactableLayer))
@@ -76,6 +78,17 @@ namespace Gameplay.Player
currentTarget = null;
}
}
public void SetPlayerInteractionEnabled(bool isEnabled)
{
isEnablePlayerInteraction = isEnabled;
if (!isEnabled && previousGazedTarget != null)
{
previousGazedTarget.OnGazeExit(this.gameObject);
previousGazedTarget = null;
currentTarget = null;
}
}
void OnDrawGizmos()
{