using Data; using TMPro; using UnityEngine; using Utils; namespace Entity { public class BuildingOutline : Outline { public BoxCollider2D boxCollider; public CircleCollider2D trigger; public TMP_Text tip; public bool PlayerOnGround { get; private set; } private void OnTriggerEnter2D(Collider2D other) { if (other.gameObject.CompareTag("Player")) { tip.gameObject.SetActive(true); PlayerOnGround = true; } } private void OnTriggerExit2D(Collider2D other) { tip.gameObject.SetActive(false); PlayerOnGround = false; } public override void Init() { var textureSize = GetBodyTextureSize(); outlineRenderer.size = textureSize; var colliderSize = GetColliderSize(); boxCollider.size = colliderSize; boxCollider.offset = GetOffset(); if (progressBarPrefab) { progressBarPrefab.transform.localPosition += new Vector3(0f, textureSize.y * 2 / 3, 0f); progressBarPrefab.transform.localScale = new Vector3(textureSize.x, 1f / 10f, 1); } if (entity.entityDef is not BuildingDef buildingDef || buildingDef.triggerEvents == null) { trigger.enabled = false; return; } trigger.radius = buildingDef.detectionRadius; if (!string.IsNullOrEmpty(buildingDef.triggerPosition)) { var position = StringUtils.StringToVector2(buildingDef.triggerPosition); trigger.offset = position; } // tip.transform.localPosition += new Vector3(0f, textureSize.y * 2 / 3, 0f); tip.text = $"按{buildingDef.activateKey}打开{buildingDef.label}\n{buildingDef.description}"; tip.gameObject.SetActive(false); } } }