| | |
| | | /// </summary> |
| | | protected bool isSlowDown; |
| | | |
| | | private bool isFrost; |
| | | |
| | | /// <summary> |
| | | /// 是否处于冰冻状态 |
| | | /// </summary> |
| | | protected bool isFrost; |
| | | /// <value></value> |
| | | public bool IsFrost |
| | | { |
| | | get { return isFrost; } |
| | | set |
| | | { |
| | | if (!isFrost) |
| | | { |
| | | if (value) |
| | | { |
| | | EndlessGameUI.instance.FloatFrostWord(transform.position); |
| | | PlaySlowDownEffect(); |
| | | CanMove = false; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | if (!value) |
| | | { |
| | | StopSlowDownEffect(); |
| | | CanMove = true; |
| | | } |
| | | } |
| | | |
| | | isFrost = value; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 冰冻剩余时间,< 0时解除冰冻,冰冻期间不会被再次冰冻 |
| | | /// </summary> |
| | | public float FrostRemainTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 中毒粒子特效 |
| | |
| | | public ParticleSystem SlowDownParticle; |
| | | |
| | | /// <summary> |
| | | /// 冰冻特效 |
| | | /// </summary> |
| | | public ParticleSystem FrostParticle; |
| | | |
| | | /// <summary> |
| | | /// 被火技能攻击特效 |
| | | /// </summary> |
| | | public ParticleSystem FireSkillParticle; |
| | | |
| | | |
| | | /// <summary> |
| | | /// 降低移动速度. |
| | |
| | | speedSlowRate += rate; |
| | | if (speedSlowRate >= 0.5f) |
| | | speedSlowRate = 0.5f; |
| | | } |
| | | |
| | | private bool _HasSlowDownText; |
| | | public bool HasSlowDownText |
| | | { |
| | | set |
| | | { |
| | | _HasSlowDownText = value; |
| | | } |
| | | get |
| | | { |
| | | return _HasSlowDownText; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | protected virtual void SetAgentStopBuff(buffinfo binfo) |
| | | { |
| | | MoveStopTime = binfo.last / 1000; |
| | | |
| | | if (!isFrost) |
| | | { |
| | | isFrost = true; |
| | | |
| | | if (FrostParticle != null) |
| | | FrostParticle.Play(); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | ps?.Play(); |
| | | } |
| | | |
| | | BloodBar.Hide(); |
| | | if (BloodBar) |
| | | Destroy(BloodBar.gameObject); |
| | | // 统一管理器内删除当前的Agent: |
| | | AgentInsManager.instance.removeAgent(this); |
| | | if (EnemyData != null) |
| | |
| | | poisonAttid = 0; |
| | | poisonTimes = 0; |
| | | timeToPoisonHurt = 0; |
| | | isFrost = false; |
| | | IsFrost = false; |
| | | bInDeathAct = false; |
| | | ChangeState(AgentActionState.Move); |
| | | configuration.ClearShieldWall(); |
| | | |
| | | StopFrostParticle(); |
| | | |
| | | if (WoodAimCount > 0) |
| | | WoodAimCount = 0; |
| | |
| | | // 停止DoTween动画. |
| | | transform.DOKill(); |
| | | Destroy(gameObject); |
| | | } |
| | | |
| | | private void StopFrostParticle() |
| | | { |
| | | if (FrostParticle != null) |
| | | FrostParticle.Stop(); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | |
| | | // 获取移动速度 |
| | | fMoveSpeed = m_NavMeshAgent.speed / 2.0f; |
| | | _HasSlowDownText = false; |
| | | } |
| | | |
| | | protected void beDamageStart() |
| | |
| | | MoveStopTime = 0.0f; |
| | | } |
| | | |
| | | private void PlaySlowDownEffect() |
| | | { |
| | | if (SlowDownParticle != null) |
| | | SlowDownParticle.Play(); |
| | | } |
| | | |
| | | private void StopSlowDownEffect() |
| | | { |
| | | if (SlowDownParticle != null && !isSlowDown && !IsFrost) |
| | | { |
| | | SlowDownParticle.Stop(); |
| | | SlowDownParticle.Clear(); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 根据帧间的时间,来更新Agent的位置信息,其它信息直接删除. |
| | | /// 1: |
| | |
| | | /// <param name="deltaTime"></param> |
| | | protected void updateAgentPos(float deltaTime) |
| | | { |
| | | if ((!m_CurrentNode) || (!m_NextNode)) |
| | | return; |
| | | |
| | | // 是否处于停止状态. |
| | | if (MoveStopTime > 0) |
| | | { |
| | | MoveStopTime -= Time.deltaTime; |
| | | if (MoveStopTime <= 0) |
| | | { |
| | | StopFrostParticle(); |
| | | MoveStopTime = 0; |
| | | } |
| | | else |
| | | return; |
| | | } |
| | | |
| | | if (fMoveSpeed == 0) |
| | | { |
| | | Debug.Log("当前的移动为零:" + fMoveSpeed); |
| | | return; |
| | | } |
| | | if (!m_CurrentNode || !m_NextNode || fMoveSpeed <= 0.0001f) return; |
| | | |
| | | float finalSpeed = fMoveSpeed * (1 - speedSlowRate); |
| | | |
| | | if (speedSlowRate > 0 && !isSlowDown) |
| | | { |
| | | isSlowDown = true; |
| | | |
| | | if (SlowDownParticle != null) |
| | | SlowDownParticle.Play(); |
| | | PlaySlowDownEffect(); |
| | | } |
| | | else if (speedSlowRate == 0 && isSlowDown) |
| | | { |
| | | isSlowDown = false; |
| | | |
| | | if (SlowDownParticle != null) |
| | | { |
| | | SlowDownParticle.Stop(); |
| | | SlowDownParticle.Clear(); |
| | | } |
| | | StopSlowDownEffect(); |
| | | } |
| | | |
| | | Vector3 curPos = m_NavMeshAgent.transform.position; |
| | |
| | | { |
| | | UpdateAction(); |
| | | HandleShieldWall(); |
| | | HandleFrost(); |
| | | |
| | | // 处理死亡状态了,不必再移动: |
| | | if (bInDeathAct || !CanMove) return; |
| | |
| | | updatePoison(Time.deltaTime); |
| | | } |
| | | |
| | | private void HandleFrost() |
| | | { |
| | | if (IsFrost) |
| | | { |
| | | if (FrostRemainTime > 0f) |
| | | { |
| | | FrostRemainTime -= Time.deltaTime; |
| | | |
| | | if (FrostRemainTime <= 0f) |
| | | IsFrost = false; |
| | | } |
| | | else |
| | | IsFrost = false; |
| | | } |
| | | } |
| | | |
| | | protected virtual void Update() |
| | | { |
| | | |