using Core.Triiger;
using GameLogic.Combat.CombatTool;
using UnityEngine;
namespace GameLogic.Combat.Hero.State
{
///
/// 再空中飞来飞去撞的时候
///
public class MagicWeaponMoveState : CombatHeroStateBasic
{
private CombatMagicWeaponEntity myCombatMagicWeaponEntity;
private float speed = 5;
private IUnRegister OnTriggerEnterEvent;
public MagicWeaponMoveState(CombatHeroEntity combatHeroEntity) : base(combatHeroEntity)
{
myCombatMagicWeaponEntity = combatHeroEntity as CombatMagicWeaponEntity;
}
protected override void ProEnter()
{
OnTriggerEnterEvent= myCombatMagicWeaponEntity.GameObject.OnTriggerEnterEvent(OnTriggerEnter);
}
private void OnTriggerEnter(Collider collider)
{
HeroEntityMono heroEntityMono= collider.GetComponent();
if (heroEntityMono == null|| heroEntityMono.combatHeroEntity!= myCombatMagicWeaponEntity.CollidingTarget)
{
return;
}
//碰到了要撞的敌人
}
protected override void ProUpdate(float t)
{
if (myCombatMagicWeaponEntity.CollidingTarget == null)
{
CombatMagicWeaponEntity combatMagicWeaponEntity =
CombatController.currActiveCombat.MagicWeaponCombatSence.FindCollidingTarget(
myCombatMagicWeaponEntity);
myCombatMagicWeaponEntity.CollidingTarget = combatMagicWeaponEntity;
}
CombatMagicWeaponEntity currCollidingTarget = myCombatMagicWeaponEntity.CollidingTarget;
if (currCollidingTarget == null) //没有可碰撞的法宝了
{
return;
}
if (!currCollidingTarget.isCombatState) //如果目标已经激活了,那么就直接攻击
{
return;
}
// _currPos=
Vector3 newDir = (currCollidingTarget.dotPos - myCombatMagicWeaponEntity.dotPos).normalized;
Vector3 dir = Vector3.Lerp(myCombatMagicWeaponEntity.faceDir, newDir, 0.1f);
dir.Normalize();
Vector3 movePos = dir * speed * t;
Vector3 _currPos = myCombatMagicWeaponEntity.dotPos;
_currPos += movePos;
myCombatMagicWeaponEntity.combatHeroGameObject.SetPosition(_currPos);
myCombatMagicWeaponEntity.GameObject.transform.rotation = Quaternion.LookRotation(dir);
}
protected void ActiveHero()
{
}
protected override void ProExit()
{
OnTriggerEnterEvent.UnRegister();
}
public override bool IsUpdateLockTarget()
{
return false;
}
protected override void ProDispose()
{
}
}
}