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() { } } }