using Core.Utilities;
|
using KTGMGemClient;
|
using DG.Tweening;
|
using UnityEngine;
|
|
/**
|
* 木桩墙壁
|
* @Author: chenxin
|
* @Date: 2020-11-07 11:13:25
|
*/
|
namespace TowerDefense.Agents
|
{
|
public class WoodPileAgent : Agent
|
{
|
/// <summary>
|
/// 外部赋值,唯一标识一个泡泡炸弹代理
|
/// </summary>
|
public int Id { get; set; }
|
|
/// <summary>
|
/// 木桩墙壁收到货塔攻击的额外伤害倍率
|
/// </summary>
|
public float FireHurtRate { get; set; }
|
|
/// <summary>
|
/// Peforms the relevant path update
|
/// 执行相关路径更新
|
/// </summary>
|
protected override void PathUpdate()
|
{
|
|
}
|
|
/// <summary>
|
/// The behaviour for when the agent has been blocked
|
/// 代理被阻止时的行为
|
/// </summary>
|
protected override void OnPartialPathUpdate()
|
{
|
|
}
|
|
protected override void Update()
|
{
|
|
}
|
|
/// <summary>
|
/// Stops the navMeshAgent and attempts to return to pool
|
/// </summary>
|
public override void Remove()
|
{
|
// 统一管理器内删除当前的Agent:
|
AgentInsManager.instance.removeAgent(this);
|
|
configuration.SetHealth(0);
|
OnRemoved();
|
|
if (m_NavMeshAgent.enabled)
|
{
|
m_NavMeshAgent.isStopped = true;
|
}
|
m_NavMeshAgent.enabled = false;
|
|
// 必须要重置数据,不然会有一系列的小Bug.
|
this.m_CurrentNode = null;
|
m_NextNode = null;
|
|
this.liveID = this.liveID + 1;
|
bInDeathAct = false;
|
|
// 删除当前停止特效和状态.
|
if (MoveStopTime > 0)
|
MoveStopTime = 0.0f;
|
|
Poolable.TryPool(gameObject);
|
}
|
|
protected override void SetAgentStopBuff(buffinfo binfo)
|
{
|
// 本来木桩也不会动
|
}
|
|
/// <summary>
|
/// Setup all the necessary parameters for this agent from configuration data
|
/// </summary>
|
public override void Initialize()
|
{
|
configuration.SetHealth(configuration.maxHealth);
|
state = isPathBlocked ? State.OnPartialPath : State.OnCompletePath;
|
|
// 设置一个DOTween队列,让场景内刷出来的Agent有一个变大淡出的效果,此时是无敌效果加持.
|
this.configuration.bInvincible = true;
|
mDefaultScale = this.transform.localScale;
|
Sequence agentTweenSeq = DOTween.Sequence();
|
var ss = mDefaultScale * 0.3f;
|
this.transform.localScale = this.transform.localScale * 0.3f;
|
Tweener agScale = this.transform.DOScale(mDefaultScale, 0.3f);
|
agentTweenSeq.Append(agScale);
|
agentTweenSeq.AppendCallback(beDamageStart);
|
|
this.nodeMoveUpdate = false;
|
|
// 获取移动速度
|
fMoveSpeed = this.m_NavMeshAgent.speed / 2.0f;
|
}
|
|
public override void PlayDeath()
|
{
|
EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.EndlessWoodPileBeKilled, Id);
|
Remove();
|
}
|
}
|
}
|