コード例 #1
0
        private void PostProcessProjectile(Projectile sourceProjectile, float effectChanceScalar)
        {
            try
            {
                sourceProjectile.OnDestruction += this.Removinator;
                ActiveProjectiles.Add(sourceProjectile);

                ComplexProjectileModifier complexProjectileModifier = PickupObjectDatabase.GetById(298) as ComplexProjectileModifier;
                chainGlitchPreventinator = complexProjectileModifier.ChainLightningMaxLinkDistance;
            }
            catch (Exception ex)
            {
                global::ETGModConsole.Log(ex.Message, false);
            }
        }
コード例 #2
0
        private void SpawnProjectile()
        {
            //If no spawn transform has been set, use the default owner transform
            if (!ownerMoveset.ProjectileSpawnTransform)
            {
                SpawnTransform = owner.transform;
            }
            else
            {
                SpawnTransform = ownerMoveset.ProjectileSpawnTransform;
            }

            //Log if a projectile couldn't be found
            if (!_projectile)
            {
                Debug.LogError("Projectile for " + abilityData.abilityName + " could not be found.");
                return;
            }

            //Create object to spawn laser from
            GameObject spawnerObject = new GameObject();

            spawnerObject.transform.parent        = SpawnTransform;
            spawnerObject.transform.localPosition = Vector3.zero;
            spawnerObject.transform.position      = new Vector3(spawnerObject.transform.position.x + owner.transform.forward.x, spawnerObject.transform.position.y, owner.transform.position.z);
            spawnerObject.transform.forward       = owner.transform.forward;

            //Initialize and attach spawn script
            ProjectileSpawnerBehaviour spawnScript = spawnerObject.AddComponent <ProjectileSpawnerBehaviour>();

            spawnScript.projectile = _projectile;

            //Fire laser
            GameObject newProjectile = spawnScript.FireProjectile(spawnerObject.transform.forward * abilityData.GetCustomStatValue("Speed"), _projectileCollider);

            ActiveProjectiles.Add(newProjectile);

            MonoBehaviour.Destroy(spawnerObject);
        }
コード例 #3
0
 private void Removinator(Projectile projectile)
 {
     ActiveProjectiles.Remove(projectile);
 }