CultivationOfBrewing-2/Assets/Scripts/Project/Objects/Other/NPCController.cs

99 lines
2.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NPCController : PermanentTriggerBase
{
public SpriteRenderer spriteRenderer;
public Animator animator;
public string animatorParameters;
public Transform target;
private float distance;
public float minDistance;
/// <summary>
/// 是否靠近
/// </summary>
public bool isClose = false;
public Func<bool> canTalk;
public Action talkAction;
private void Update()
{
if (target != null)
distance = Vector3.Distance(transform.position, target.position);
if (distance < minDistance)
{
transform.LookAt(target.position);
transform.eulerAngles = new Vector3(0, transform.eulerAngles.y, 0);
isClose = true;
if (GameManager.UIMgr.GetPanel<UI_MiddleTipPanel>())//HQB Bug报人物靠近后靠近交互对象的提示还在s
{
GameManager.UIMgr.HidePanel<UI_MiddleTipPanel>();
}
}
else
{
isClose = false;
}
}
protected override void OnMEnter()
{
base.OnMEnter();
if (!isClose) return;
if (GameManager.RunModelMgr?.ModeType != E_ModeType.Study)
{
_highlight.SetHighlighted(true);
}
}
protected override void OnMExit()
{
if (GameManager.RunModelMgr?.ModeType != E_ModeType.Study)
_highlight.SetHighlighted(false);
base.OnMExit();
}
protected override void OnMDown()
{
base.OnMDown();
if (canTalk != null && !canTalk.Invoke())
{
return;
}
if (!isClose)
{
if (GameManager.UIMgr.GetPanel<UI_MiddleTipPanel>() != null)
GameManager.UIMgr.GetPanel<UI_MiddleTipPanel>().Init("提示:请靠近交互对象");
if (GameManager.UIMgr.GetPanel<UI_MiddleTipPanel>() == null)
{
GameManager.UIMgr.ShowPanel<UI_MiddleTipPanel>(E_UI_Layer.System, (p) =>
{
p.Init($"提示:请靠近交互对象");
});
}
return;
}
//if (GameManager.ProcessMgr.IsRightSubProcessStepsTriggerID(triggerName, false) == 0)
//{
talkAction?.Invoke();
_highlight.SetHighlighted(false);
if (spriteRenderer != null)
spriteRenderer.gameObject.SetActive(false);
if (animator != null)
{
animator.SetInteger(animatorParameters, 1);
}
//}
}
public void StopAnimator()
{
if (animator != null)
{
animator.SetInteger(animatorParameters, 0);
}
}
}