Пример #1
0
        public override void OnEnter()
        {
            base.OnEnter();

            ProjectileTargetComponent projTarget = projPrefab.GetComponent <ProjectileTargetComponent>();

            if (!projTarget)
            {
                projTarget = projPrefab.AddComponent <ProjectileTargetComponent>();
            }
            ProjectileDirectionalTargetFinder projFinder = projPrefab.GetComponent <ProjectileDirectionalTargetFinder>();

            if (!projFinder)
            {
                projFinder = projPrefab.AddComponent <ProjectileDirectionalTargetFinder>();
            }
            projFinder.lookCone             = 6.5f;
            projFinder.lookRange            = 60.0f;
            projFinder.targetSearchInterval = 0.15f;
            projFinder.onlySearchIfNoTarget = false;
            projFinder.allowTargetLoss      = true;
            projFinder.testLoS   = true;
            projFinder.ignoreAir = false;
            ProjectileSteerTowardTarget projSteer = projPrefab.GetComponent <ProjectileSteerTowardTarget>();

            if (!projSteer)
            {
                projSteer = projPrefab.AddComponent <ProjectileSteerTowardTarget>();
            }
            projSteer.rotationSpeed = 45.0f;
            ProjectileSimple projSimp = projPrefab.GetComponent <ProjectileSimple>();

            if (!projSimp)
            {
                Debug.Log("Dafuq you done?");
            }
            projSimp.updateAfterFiring = true;

            duration     = baseDuration;
            arrowFireEnd = duration * spacingFrac;
            arrowTime    = (duration - arrowFireEnd) / baseArrowsToFire / attackSpeedStat;

            this.projPrefab.GetComponent <ProjectileController>().procCoefficient = 0.4f;

            Transform modelTrans = base.GetModelTransform();

            PlayCrossfade("Gesture, Override", "FireSeekingShot", "FireSeekingShot.playbackRate", arrowTime, arrowTime * 0.2f / attackSpeedStat);
            PlayCrossfade("Gesture, Additive", "FireSeekingShot", "FireSeekingShot.playbackRate", arrowTime, arrowTime * 0.2f / attackSpeedStat);

            if (modelTrans)
            {
                childLoc = modelTrans.GetComponent <ChildLocator>();
                anim     = modelTrans.GetComponent <Animator>();
            }
            if (characterBody)
            {
                characterBody.SetAimTimer(duration + 1.0f);
            }
            timer        = 0.0f;
            arrowTimer   = 0.0f;
            arrowCounter = 0;
            fireArrow();
        }
Пример #2
0
        private void CreateLightningSword(Int32 meshInd)
        {
            GameObject ghost = this.CreateLightningSwordGhost(meshInd);
            GameObject proj  = Resources.Load <GameObject>("Prefabs/Projectiles/LunarNeedleProjectile").InstantiateClone("LightningSwordProjectile" + meshInd.ToString());

            ProjectileCatalog.getAdditionalEntries += (list) => list.Add(proj);

            AltArtiPassive.lightningProjectile[meshInd] = proj;

            ProjectileController projController = proj.GetComponent <ProjectileController>();

            projController.ghostPrefab     = ghost;
            projController.procCoefficient = 0.2f;

            ProjectileSimple projSimple = proj.GetComponent <ProjectileSimple>();

            projSimple.enabled = true;
            projSimple.enableVelocityOverLifetime = false;
            projSimple.velocity = 60f;


            ProjectileDirectionalTargetFinder projTargetFind = proj.GetComponent <ProjectileDirectionalTargetFinder>();

            projTargetFind.enabled = false;

            ProjectileSteerTowardTarget projSteering = proj.GetComponent <ProjectileSteerTowardTarget>();

            projSteering.enabled       = true;
            projSteering.rotationSpeed = 140f;

            ProjectileStickOnImpact projStick = proj.GetComponent <ProjectileStickOnImpact>();

            //projStick.ignoreCharacters = false;
            //projStick.ignoreWorld = false;
            projStick.alignNormals = false;

            ProjectileImpactExplosion projExpl = proj.GetComponent <ProjectileImpactExplosion>();

            projExpl.impactEffect                  = Resources.Load <GameObject>("Prefabs/Effects/LightningStakeNova");
            projExpl.explosionSoundString          = "Play_item_lunar_primaryReplace_impact";
            projExpl.lifetimeExpiredSoundString    = "";
            projExpl.offsetForLifetimeExpiredSound = 0f;
            projExpl.destroyOnEnemy                = false;
            projExpl.destroyOnWorld                = false;
            projExpl.timerAfterImpact              = true;
            projExpl.falloffModel                  = BlastAttack.FalloffModel.None;
            projExpl.lifetime                  = 10f;
            projExpl.lifetimeAfterImpact       = 1f;
            projExpl.lifetimeRandomOffset      = 0f;
            projExpl.blastRadius               = 1f;
            projExpl.blastDamageCoefficient    = 1f;
            projExpl.blastProcCoefficient      = 0.2f;
            projExpl.bonusBlastForce           = Vector3.zero;
            projExpl.fireChildren              = false;
            projExpl.childrenProjectilePrefab  = null;
            projExpl.childrenCount             = 0;
            projExpl.childrenDamageCoefficient = 0f;
            projExpl.minAngleOffset            = Vector3.zero;
            projExpl.maxAngleOffset            = Vector3.zero;
            projExpl.transformSpace            = ProjectileImpactExplosion.TransformSpace.World;
            projExpl.projectileHealthComponent = null;

            ProjectileSingleTargetImpact projStimp = proj.GetComponent <ProjectileSingleTargetImpact>();

            projStimp.destroyOnWorld      = false;
            projStimp.hitSoundString      = "Play_item_proc_dagger_impact";
            projStimp.enemyHitSoundString = "Play_item_proc_dagger_impact";


            proj.AddComponent <Components.SoundOnAwake>().sound = "Play_item_proc_dagger_spawn";

            //UnityEngine.Object.DestroyImmediate( proj.GetComponent<ProjectileSingleTargetImpact>() );
            UnityEngine.Object.Destroy(proj.GetComponent <AwakeEvent>());
            UnityEngine.Object.Destroy(proj.GetComponent <DelayedEvent>());
        }