mirror of
http://47.107.252.169:3000/Roguelite-Game-Developing-Team/Gen_Hack-and-Slash-Roguelite.git
synced 2025-11-20 07:27:12 +08:00
Co-authored-by: m0_75251201 <m0_75251201@noreply.gitcode.com> Reviewed-on: http://47.107.252.169:3000/Roguelite-Game-Developing-Team/Gen_Hack-and-Slash-Roguelite/pulls/57
63 lines
2.0 KiB
C#
63 lines
2.0 KiB
C#
using System;
|
|
using Base;
|
|
using Data;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
|
|
namespace Entity
|
|
{
|
|
public class BuildingOutline : Outline
|
|
{
|
|
public BoxCollider2D boxCollider;
|
|
public CircleCollider2D trigger;
|
|
|
|
public TMP_Text tip;
|
|
public bool PlayerOnGround { get; private set; }
|
|
|
|
override public 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 = Utils.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);
|
|
|
|
}
|
|
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;
|
|
}
|
|
}
|
|
} |