public override void Init(Transform contSoldier) { base.Init(contSoldier); //maxErrorToPos = SoldierGeneral.SoldierMaxErrorToPos; maxErrorToPos = 1; onPosFightInPointInfo = soldInfo.soldierGeneralInfo.defaultOnPosFightInPointInfo; if (soldCharInfo.FightSide == FightSideEnum.Enemy) { InitAIVoiceSitu(AIVoiceSituation.Agressive); } }
//bool SlowlyCheckPlayerInCritStateWhileInFightInPos() //{ // time_CheckPlayerInCritStateWhileInFightInPos_Counter = MathfPlus.DecByDeltatimeToZero(time_CheckPlayerInCritStateWhileInFightInPos_Counter); // if (time_CheckPlayerInCritStateWhileInFightInPos_Counter <= 0) // { // if (soldInfo.IsCharInViewAndTargettable(mapLogic.player)) // return true; // } // return false; //} bool CheckIsCurrentPointOkForPlayerCritState() { bool isThisFightPointStillOk = false; foreach (SoldierFightInPointInfo fipi in selectedFightPoint.fightInfos) { SoldierFightInPointInfo sfi = fipi; Vector3 rayCastPos = SoldierStats.GetShootingRaycastPos(controlledSoldier.position, selectedFightPoint.transform.rotation, sfi.GetRaycastOffsetForGun(soldInfo.gun.name)); CharRaycastResult charRayRes; if (mapLogic.IsCharacterOkAsTarget(controlledSoldier.gameObject, mapLogic.player, rayCastPos, selectedFightPoint.transform.rotation, soldInfo.fightRange, sfi.shootingStartAngle, sfi.shootingEndAngle, out charRayRes)) { isThisFightPointStillOk = true; break; } if (fipi.playerCriticalFightInfoInCover != null) { sfi = fipi.playerCriticalFightInfoInCover; rayCastPos = SoldierStats.GetShootingRaycastPos(controlledSoldier.position, selectedFightPoint.transform.rotation, sfi.GetRaycastOffsetForGun(soldInfo.gun.name)); if (mapLogic.IsCharacterOkAsTarget(controlledSoldier.gameObject, mapLogic.player, rayCastPos, selectedFightPoint.transform.rotation, soldInfo.fightRange, sfi.shootingStartAngle, sfi.shootingEndAngle, out charRayRes)) { isThisFightPointStillOk = true; break; } } if (fipi.playerCriticalFightInfoInShoot != null) { sfi = fipi.playerCriticalFightInfoInShoot; rayCastPos = SoldierStats.GetShootingRaycastPos(controlledSoldier.position, selectedFightPoint.transform.rotation, sfi.GetRaycastOffsetForGun(soldInfo.gun.name)); if (mapLogic.IsCharacterOkAsTarget(controlledSoldier.gameObject, mapLogic.player, rayCastPos, selectedFightPoint.transform.rotation, soldInfo.fightRange, sfi.shootingStartAngle, sfi.shootingEndAngle, out charRayRes)) { isThisFightPointStillOk = true; break; } } } return(isThisFightPointStillOk); }
public static Vector3 GetShootingRaycastPos(Vector3 _basePos, Quaternion _baseRot, SoldierFightInPointInfo _info, SoldierGun _gun) { return(GetShootingRaycastPos(_basePos, _baseRot, _info.GetRaycastOffsetForGun(_gun.name))); }