Ejemplo n.º 1
0
        private void InstantiateExplosion(BulletHitEvent e, WeaponNode weaponNode)
        {
            BulletEffectComponent    bulletEffect  = weaponNode.bulletEffect;
            GetInstanceFromPoolEvent eventInstance = new GetInstanceFromPoolEvent {
                Prefab          = bulletEffect.ExplosionPrefab,
                AutoRecycleTime = bulletEffect.ExplosionTime
            };

            base.ScheduleEvent(eventInstance, weaponNode);
            GameObject gameObject = eventInstance.Instance.gameObject;

            gameObject.transform.position = e.Position;
            gameObject.transform.rotation = Quaternion.identity;
            gameObject.SetActive(true);
        }
        public void SpawnExplosionOnBounce(UpdateBulletEvent e, BulletNode bulletNode, [JoinByTank] WeaponNode weaponNode)
        {
            BulletEffectComponent bulletEffect = weaponNode.bulletEffect;
            DirectionData         data         = e.TargetingData.Directions.First <DirectionData>();

            if (data.StaticHit != null)
            {
                GetInstanceFromPoolEvent eventInstance = new GetInstanceFromPoolEvent {
                    Prefab          = bulletEffect.ExplosionPrefab,
                    AutoRecycleTime = bulletEffect.ExplosionTime
                };
                base.ScheduleEvent(eventInstance, new EntityStub());
                Transform instance = eventInstance.Instance;
                instance.position = data.StaticHit.Position + (data.StaticHit.Normal * bulletEffect.ExplosionOffset);
                instance.rotation = Quaternion.LookRotation(data.StaticHit.Normal);
                instance.gameObject.SetActive(true);
            }
        }