コード例 #1
0
        public override void OnEnter()
        {
            ChargeMegaLaser titanLaser = new ChargeMegaLaser();

            effectPrefab            = titanLaser.effectPrefab;
            laserPrefab             = titanLaser.laserPrefab;
            chargeAttackSoundString = EntityStates.GolemMonster.ChargeLaser.attackSoundString;
            lockOnAngle             = ChargeMegaLaser.lockOnAngle;
            base.OnEnter();
            duration = baseDuration / attackSpeedStat;
            Transform modelTransform = GetModelTransform();

            Util.PlayAttackSpeedSound(chargeAttackSoundString, base.gameObject, 2.1f / duration);
            Ray aimRay = GetAimRay();

            enemyFinder = new BullseyeSearch();
            enemyFinder.maxDistanceFilter = 2000f;
            enemyFinder.maxAngleFilter    = lockOnAngle;
            enemyFinder.searchOrigin      = aimRay.origin;
            enemyFinder.searchDirection   = aimRay.direction;
            enemyFinder.filterByLoS       = false;
            enemyFinder.sortMode          = BullseyeSearch.SortMode.Angle;
            enemyFinder.teamMaskFilter    = TeamMask.allButNeutral;
            if ((bool)base.teamComponent)
            {
                enemyFinder.teamMaskFilter.RemoveTeam(base.teamComponent.teamIndex);
            }
            if ((bool)modelTransform)
            {
                ChildLocator component = modelTransform.GetComponent <ChildLocator>();
                if ((bool)component)
                {
                    Transform transform = component.FindChild("MuzzleLaser");
                    if ((bool)transform)
                    {
                        if ((bool)effectPrefab)
                        {
                            chargeEffect = UnityEngine.Object.Instantiate(effectPrefab, transform.position, transform.rotation);
                            chargeEffect.transform.parent = transform;
                            ScaleParticleSystemDuration component2 = chargeEffect.GetComponent <ScaleParticleSystemDuration>();
                            if ((bool)component2)
                            {
                                component2.newDuration = duration;
                            }
                        }
                        if ((bool)laserPrefab)
                        {
                            laserEffect = UnityEngine.Object.Instantiate(laserPrefab, transform.position, transform.rotation);
                            laserEffect.transform.parent = transform;
                            laserLineComponent           = laserEffect.GetComponent <LineRenderer>();
                        }
                    }
                }
            }
            if ((bool)base.characterBody)
            {
                base.characterBody.SetAimTimer(duration);
            }
            flashTimer = 0f;
            laserOn    = true;
        }
コード例 #2
0
        public override void OnEnter()
        {
            ChargeMegaLaser titanLaser = new ChargeMegaLaser();

            effectPrefab            = titanLaser.effectPrefab;
            laserPrefab             = titanLaser.laserPrefab;
            chargeAttackSoundString = ChargeMegaLaser.chargeAttackSoundString;
            lockOnAngle             = ChargeMegaLaser.lockOnAngle;
            base.OnEnter();
            duration = baseDuration / attackSpeedStat;
            Transform modelTransform = GetModelTransform();

            Util.PlayAttackSpeedSound(chargeAttackSoundString, base.gameObject, 2.1f / duration);
            Ray leftAimRay = GetAimRay();

            leftEnemyFinder = new BullseyeSearch();
            leftEnemyFinder.maxDistanceFilter = 2000f;
            leftEnemyFinder.maxAngleFilter    = lockOnAngle;
            leftEnemyFinder.searchOrigin      = leftAimRay.origin;
            leftEnemyFinder.searchDirection   = leftAimRay.direction;
            leftEnemyFinder.filterByLoS       = false;
            leftEnemyFinder.sortMode          = BullseyeSearch.SortMode.Angle;
            leftEnemyFinder.teamMaskFilter    = TeamMask.allButNeutral;
            Ray rightAimRay = GetAimRay();

            rightEnemyFinder = new BullseyeSearch();
            rightEnemyFinder.maxDistanceFilter = 2000f;
            rightEnemyFinder.maxAngleFilter    = lockOnAngle;
            rightEnemyFinder.searchOrigin      = rightAimRay.origin;
            rightEnemyFinder.searchDirection   = rightAimRay.direction;
            rightEnemyFinder.filterByLoS       = false;
            rightEnemyFinder.sortMode          = BullseyeSearch.SortMode.Angle;
            rightEnemyFinder.teamMaskFilter    = TeamMask.allButNeutral;
            if ((bool)base.teamComponent)
            {
                leftEnemyFinder.teamMaskFilter.RemoveTeam(base.teamComponent.teamIndex);
                rightEnemyFinder.teamMaskFilter.RemoveTeam(base.teamComponent.teamIndex);
            }
            GetModelAnimator();
            PlayAnimation("Gesture", "ChargeCannons", "ChargeCannons.playbackRate", duration);
            if ((bool)modelTransform)
            {
                ChildLocator component = modelTransform.GetComponent <ChildLocator>();
                if ((bool)component)
                {
                    Transform leftHandTransform  = component.FindChild("MuzzleLeft");
                    Transform rightHandTransform = component.FindChild("MuzzleRight");
                    //Left Hand
                    if ((bool)leftHandTransform)
                    {
                        if ((bool)effectPrefab)
                        {
                            leftChargeEffectInstance = UnityEngine.Object.Instantiate(effectPrefab, leftHandTransform.position, leftHandTransform.rotation);
                            leftChargeEffectInstance.transform.parent = leftHandTransform;
                            ScaleParticleSystemDuration component2 = leftChargeEffectInstance.GetComponent <ScaleParticleSystemDuration>();
                            if ((bool)component2)
                            {
                                component2.newDuration = duration;
                            }
                        }
                        if ((bool)laserPrefab)
                        {
                            leftLaserEffectInstance = UnityEngine.Object.Instantiate(laserPrefab, leftHandTransform.position, leftHandTransform.rotation);
                            leftLaserEffectInstance.transform.parent = leftHandTransform;
                            leftLaserLineComponent = leftLaserEffectInstance.GetComponent <LineRenderer>();
                        }
                    }
                    //Right Hand
                    if ((bool)rightHandTransform)
                    {
                        if ((bool)effectPrefab)
                        {
                            rightChargeEffectInstance = UnityEngine.Object.Instantiate(effectPrefab, rightHandTransform.position, rightHandTransform.rotation);
                            rightChargeEffectInstance.transform.parent = rightHandTransform;
                            ScaleParticleSystemDuration component2 = rightChargeEffectInstance.GetComponent <ScaleParticleSystemDuration>();
                            if ((bool)component2)
                            {
                                component2.newDuration = duration;
                            }
                        }
                        if ((bool)laserPrefab)
                        {
                            rightLaserEffectInstance = UnityEngine.Object.Instantiate(laserPrefab, rightHandTransform.position, rightHandTransform.rotation);
                            rightLaserEffectInstance.transform.parent = rightHandTransform;
                            rightLaserLineComponent = rightLaserEffectInstance.GetComponent <LineRenderer>();
                        }
                    }
                }
            }
            if ((bool)base.characterBody)
            {
                base.characterBody.SetAimTimer(duration);
            }
            flashTimer = 0f;
            laserOn    = true;
        }