public override bool IsWeaponArmingFinished(AIBrain ai) { if (ai.stateSystemAnimator.IsStartedAnimationFinished("", "LowIdle")) { // Just in case GunAtt gunAtt = ai.GetCurrentWeaponScript(); if (RightHandHold && ai.HaveCurrentWeapon() && gunAtt && gunAtt.GetFixer(ai.Transform.name, WeaponFixerTypes.AnimRightHand)) { RightHandHold.localPosition = gunAtt.GetFixer(ai.Transform.name, WeaponFixerTypes.AnimRightHand).localPosition; RightHandHold.localRotation = gunAtt.GetFixer(ai.Transform.name, WeaponFixerTypes.AnimRightHand).localRotation; WeaponIK.localPosition = gunAtt.GetFixer(ai.Transform.name, WeaponFixerTypes.AimHipFire).localPosition; WeaponIK.localRotation = gunAtt.GetFixer(ai.Transform.name, WeaponFixerTypes.AimHipFire).localRotation; } ai.CurrentWeapon.SetParent(RightHandHold, false); ai.CurrentWeapon.localPosition = Vector3.zero; ai.CurrentWeapon.localRotation = Quaternion.identity; return(true); } return(false);; }
public override bool CanBeAddedToPlan(AIBrain ai) { if (ai.GetSensor <SensorCanFireNMPositionFinder>().RequestAllInfo(ai) == null) { return(false); } float chance = 0; if (ai.WorldState.CompareKey(DS.takingBulletDamage, true)) { chance = applicapableChanceInBetweenPerc.y; } else { chance = applicapableChanceInBetweenPerc.x; } if ( Random.Range(0, 100) < chance && ai.HaveCurrentTarget() && ai.HaveCurrentWeapon() ) { return(true); } return(false); }
public override bool CanActivate(AIBrain ai) { if (ai.HaveCurrentTarget() && ai.HaveCurrentWeapon()) { return(true); } return(false); }
public override bool CanBeAddedToPlan(AIBrain ai) { if (ai.HaveCurrentTarget() && ai.HaveCurrentWeapon()) { return(true); } return(false); }
public override bool CanActivate(AIBrain ai) { infoMoveSide = ai.GetSensor <SensorCanFireNMPositionFinder>().RequestInfo(ai); if (infoMoveSide != null && ai.HaveCurrentWeapon() && ai.HaveCurrentTarget()) { return(true); } return(false); }
virtual public void OnIsHandOnGun(AIBrain ai) { GunAtt gunAtt = ai.GetCurrentWeaponScript(); if (RightHandHold && ai.HaveCurrentWeapon() && gunAtt && gunAtt.GetFixer(ai.Transform.name, WeaponFixerTypes.AnimRightHand)) { RightHandHold.localPosition = gunAtt.GetFixer(ai.Transform.name, WeaponFixerTypes.AnimRightHand).localPosition; RightHandHold.localRotation = gunAtt.GetFixer(ai.Transform.name, WeaponFixerTypes.AnimRightHand).localRotation; WeaponIK.localPosition = gunAtt.GetFixer(ai.Transform.name, WeaponFixerTypes.AimHipFire).localPosition; WeaponIK.localRotation = gunAtt.GetFixer(ai.Transform.name, WeaponFixerTypes.AimHipFire).localRotation; } ai.CurrentWeapon.SetParent(RightHandHold, false); ai.CurrentWeapon.localPosition = Vector3.zero; ai.CurrentWeapon.localRotation = Quaternion.identity; }
public override bool CanBeAddedToPlan(AIBrain ai) { return(base.CanBeAddedToPlan(ai) && Random.Range(0, 100) < addToPlanPercentage && ai.HaveCurrentWeapon()); }
public void SolveLookIKUpdate(AIBrain ai) { LookIKProps.headAim = Mathf.Lerp(CheckEpsilon(LookIKProps.headAim, headIKTarget), headIKTarget, (headIKTarget == 1 ? LookIKProps.headIKSmooth : LookIKProps.headIKBackSmooth) * Time.deltaTime); Vector3 lookPos = Vector3.zero; switch (lookAtType) { case ET.LookAtType.ToCurrentTarget: lookPos = ai.GetCurrentTargetPos(); break; case ET.LookAtType.ToPosition: lookPos = lookAtPosition; break; case ET.LookAtType.Forward: lookPos = ai.Transform.position + ai.Transform.forward * 5f; break; default: break; } LookIKProps.midPos = ai.Transform.position + Vector3.up * LookIKProps.lookStartHeight; Vector3 mPosToTDir = -LookIKProps.midPos + new Vector3(lookPos.x, LookIKProps.midPos.y, lookPos.z); Vector3 mPosToCDir = LookIKProps.midPos.y * (Quaternion.AngleAxis(LookIKProps.tAngle, Vector3.up) * ai.Transform.TransformDirection(Vector3.forward)); Vector3 mPosToZeroDir = LookIKProps.midPos.y * (Quaternion.AngleAxis(0, Vector3.up) * ai.Transform.TransformDirection(Vector3.forward)); //Debug.DrawRay(LookIKProps.midPos, mPosToCDir * LookIKProps.fwSize, Color.red); float cAngleBw = Vector3.Angle(mPosToTDir, mPosToZeroDir); cAngleBw = cAngleBw * Mathf.Sign(Vector3.Dot(Quaternion.AngleAxis(90, Vector3.up) * mPosToZeroDir, mPosToTDir)); float aimingAnglePlus = 0f, weaponBodyBob = 0; if (ai.GetStateSystem <AIShooterStateSystemWeapon>() != null /*&& ai.WorldState.GetValue(DictionaryStrings.weaponAimed) == true.ToString()*/ && ai.HaveCurrentWeapon()) { aimingAnglePlus = ai.GetCurrentWeaponScript().bodyFixRight *LookIKProps.aimingWeaponHorFixMultiplier; weaponBodyBob = ai.GetStateSystem <AIShooterStateSystemWeapon>().weaponBodyBob; } if (headIKTarget == 0) { LookIKProps.tAngle = Mathf.Lerp(LookIKProps.tAngle, 0, Time.deltaTime * LookIKProps.tAngleLerpBackSpeed); } else { LookIKProps.tAngle = Mathf.Lerp(LookIKProps.tAngle, cAngleBw + aimingAnglePlus + weaponBodyBob * LookIKProps.aiWeaponBodyBobMultiplier, Time.deltaTime * LookIKProps.tAngleLerpSpeed); } LookIKProps.tAngle = Mathf.Clamp(LookIKProps.tAngle, -LookIKProps.maxLookTAngle, LookIKProps.maxLookTAngle); LookIKProps.realLookPos = LookIKProps.midPos + mPosToCDir.normalized * LookIKProps.fwSize; }