Beispiel #1
0
        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);;
        }
Beispiel #2
0
        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);
 }
Beispiel #5
0
        public override bool CanActivate(AIBrain ai)
        {
            infoMoveSide = ai.GetSensor <SensorCanFireNMPositionFinder>().RequestInfo(ai);

            if (infoMoveSide != null && ai.HaveCurrentWeapon() && ai.HaveCurrentTarget())
            {
                return(true);
            }
            return(false);
        }
Beispiel #6
0
        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;
        }