Exemplo n.º 1
0
        public virtual void Attack()
        {
            //    Debug.Log("Girando cabeca");

            try
            {
                MoveHead();
                if (timer >= attackRateTime)
                {
                    // GameObject bullet = GameObject.Instantiate(bulletPrefab, firePosition.position, firePosition.rotation);
                    GameObject bullet = BulletPrototype.getProjectile(type, firePosition.position, firePosition.rotation);
                    bullet.GetComponent <Bullet>().SetTarget(enemies[0].transform);
                    //TODO: Inserir campo dano na criação de balas. (USE PROTOTYPE!)
                    //TODO: Use flyweight para um pool de inimigos!
                    //TODO: Use State para controlar idle, atacando, upgrade
                    timer = 0;
                }
            }

            catch (MissingReferenceException e)
            {
                UpdateEnemys();
            }
            catch (ArgumentOutOfRangeException e)
            {
                state.ChangeState();
            }
        }
Exemplo n.º 2
0
        public static Transform CreateBullet(Vector2 position, float degAngle, BulletPrototype bulletPrototype, int layer, Transform parent)
        {
            var bullet = CreateBullet(position, degAngle, bulletPrototype);

            bullet.gameObject.layer = layer;
            bullet.parent           = parent;
            return(bullet);
        }
Exemplo n.º 3
0
        protected virtual Bullet Fire(GameObject gameObject)
        {
            var bullet = (Bullet)BulletPrototype.Clone();

            GameObject.Game.Objects.Add(bullet);
            bullet.X = gameObject.X;
            bullet.Y = gameObject.Y;
            if (BulletTintOverride != null)
            {
                bullet.Tint = BulletTintOverride.Value;
            }
            if (BulletTextureOverride != null)
            {
                bullet.BaseTexture = BulletTextureOverride;
            }
            return(bullet);
        }
Exemplo n.º 4
0
        public static Transform CreateBullet(Vector2 position, float degAngle, BulletPrototype bulletPrototype)
        {
            var vector = Quaternion.AngleAxis(degAngle, Vector3.forward) * Vector3.up;

            var bullet =
                (Transform)
                Object.Instantiate(bulletPrototype.Prefab, position,
                                   Quaternion.Euler(0, 0, degAngle + 90));

            bullet.gameObject.layer = Layers.GetLayer(LayerName.Player);
            var bulletScript = bullet.GetComponent <Bullet>();

            bulletScript.Damage = bulletPrototype.Damage;
            bulletScript.Speed  = bulletPrototype.Speed;
            bullet.GetComponent <Rigidbody2D>().velocity = vector * bulletPrototype.Speed;

            return(bullet);
        }
Exemplo n.º 5
0
        public void Fire()
        {
            if (Charge >= 1.0 && ElapsedTimeForShot == TimeSpan.Zero)
            {
                Charge            -= 1.0;
                ElapsedTimeForShot = ReloadingTime;
                LastShotDateTime   = DateTime.Now;

                double absoluteRotation = RelatedGameObject.GetEquipmentAbsoluteRotation(this);
                Vector absolutePosition = RelatedGameObject.GetEquipmentAbsolutePosition(this);
                Vector initialVelocity  = RelatedGameObject.Velocity + InitialBulletVelocity.Rotate(absoluteRotation);

                Bullet bullet = (Bullet)BulletPrototype.Clone();
                bullet.PlayerGuid = RelatedGameObject.PlayerGuid;
                bullet.Fire(absolutePosition + BulletOffset.Rotate(absoluteRotation), initialVelocity, absoluteRotation);

                AffectByMomentumConservationLaw(bullet);

                RelatedGameObject.GameWorldAddObjectDelegate.Invoke(bullet);
            }
        }
 void Awake()
 {
     instance        = this;
     enemySpawner    = GetComponent <EnemySpawner>();
     bulletPrototype = new BulletPrototype(bullet, missile);
 }