Example #1
0
    void FireMissles()
    {
        RemoveNullShips();
        if (count < TargetList.Count)
        {
            if (fireTimer <= 0)
            {
                Vector3    rot    = transform.rotation.eulerAngles;
                Quaternion newRot = Quaternion.Euler(new Vector3(rot.x, rot.y, rot.z + Random.Range(-20f, 20f)));
                GameObject go     = Instantiate(MisslePrefab, transform.position, newRot);
                Missle     missle = go.GetComponent <Missle>();
                missle.SetTarget(TargetList[count]);
                missle.SetOffsetVel(myShip.GetVel() + transform.up * launchSpeed * Time.deltaTime);
                go.layer = gameObject.layer;
                missle.SetVals(30, 0, 4f, 5f, 8, 100);

                fireTimer = fireInterval;
                count++;
            }
            else
            {
                fireTimer -= Time.deltaTime;
            }
        }
        else
        {
            Reset();
        }
    }
    private void MagicMissileAttack()
    {
        missleNextFire -= Time.deltaTime;
        missleNextFire  = Mathf.Clamp(missleNextFire, 0, missleNextFire);

        //&& Input.GetKey(KeyCode.LeftShift)
        if (Input.GetMouseButtonDown(1) && missleNextFire <= 0f)
        {
            Ray        ray = cam.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit, 100))
            {
                if (hit.collider.gameObject.tag != "Enemy") //Makes it so magic missles can only hit enemies (looks weird when you click the floor)
                {
                    return;
                }
                navMeshAgent.isStopped = true;
                this.transform.LookAt(new Vector3(hit.point.x, this.transform.position.y, hit.point.z));
                GameObject mm     = Instantiate(magicMissile, atkOrigin.transform.position, Quaternion.identity);
                Missle     mmInst = mm.GetComponent <Missle>();
                mmInst.setTarget(hit.collider.gameObject);
                missleNextFire = (1 / mmInst.getAttackRate());
            }
        }
    }
Example #3
0
    private void Shoot()
    {
        switch (projectileType)
        {
        case ProjectileType.BULLET:
            Bullet bullet = Instantiate(bulletPrefab, transform.position, Quaternion.identity);
            bullet.Initiate(-transform.position, damage, bulletSpeed);
            SoundController.PlayShoot();
            break;

        case ProjectileType.LASER:
            RaycastHit2D hit = Physics2D.Raycast(transform.position, -transform.position, distanceToShoot, friendlyLayers);
            Vector2      end = Vector2.zero;
            if (hit)
            {
                Planet planet = hit.collider.gameObject.GetComponent <Planet>();
                if (planet != null)
                {
                    planet.Damage(damage);
                }
                end = hit.point;
                Laser laser = Instantiate(laserPrefab, transform.position, Quaternion.identity);
                laser.Initiate(new Vector2(transform.position.x, transform.position.y), end);
            }
            SoundController.PlayLaser();
            break;

        case ProjectileType.MISSLE:
            Missle missle = Instantiate(misslePrefab, transform.position, Quaternion.identity);
            missle.Initiate(-transform.position, new Vector2(transform.position.x, transform.position.y), Vector2.zero, damage, bulletSpeed, 2);
            SoundController.PlayShoot();
            break;
        }
    }
Example #4
0
    //发生碰撞,赋给玩家
    void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.CompareTag("Tank"))
        {
            Item item = null;
            switch (itemType)
            {
            case ItemType.Wrench:
                item = new Wrench();
                break;

            case ItemType.Timer:
                item = new Timer();
                break;

            case ItemType.Shileld:
                item = new Shileld();
                break;

            case ItemType.OilBottle:
                item = new OilBottle();
                break;

            case ItemType.Missle:
                item = new Missle();
                break;
            }

            other.gameObject.GetComponent <Tank>().item = item;
            Destroy(gameObject);
        }
    }
Example #5
0
    void Start()
    {
        Missle tmp = Instantiate(missle, gameObject.transform.position, transform.rotation);

        //tmp.direction = gameObject.transform.forward;
        tmp.degAngle = gameObject.transform.eulerAngles.y;
        tmp.gameObject.SetActive(true);
    }
Example #6
0
 public void setSettings(WeaponSystem parentSystem, AudioSource source, Missle missle, AudioClip clip, float camRatio)
 {
     this.parentSystem = parentSystem;
     this.missle       = missle;
     this.audioClip    = clip;
     transform         = parentSystem.transform;
     this.audioSource  = source;
     this.camRatio     = camRatio;
 }
Example #7
0
    public virtual Missle Shoot(Vector2 direction, float speed)
    {
        missleFireSound.PlayAudioClip();
        Missle b = CreateMissle();

        b.direction = direction;
        b.speed     = speed;
        return(b);
    }
Example #8
0
 public override void Initialize()
 {
     AbilityHolder.instance.SetMissle(ref misslePrefab, ref missleMask);
     if (myMissle == null)
     {
         myMissle = Instantiate(misslePrefab);
         myMissle.SetActive(false);
         missleControl = myMissle.GetComponent <Missle>();
     }
     playerTrans = PlayerManager.instance.Player.transform;
 }
Example #9
0
 public void LaunchMissle()
 {
     if (canInteract)
     {
         GameObject newMissle = (GameObject)Instantiate(currentMissle, new Vector3(Planet.current.radius, Planet.current.radius * 2 + 0.25f + GetMissleBounds().y, 0), Quaternion.identity);
         Camera.main.GetComponent <CameraController>().FollowMissle(newMissle.transform);
         Missle m = newMissle.GetComponent <Missle>();
         m.Invoke("InvokedLaunch", 2);
         CloseEditor();
         m.inEditor = false;
     }
 }
        //Instantiate a prefab with an attached Missile Script public Missile projectile. 

        void Update()
        {
            //Ctrl was pressed, launch a projectile
            if (Input.GetBottonDown) ("Fire"))
                {
                //instantiate the projectile at the position and rotation of this transform
                Missle clone = (Missile)instnatiate(projectile, transform.position, transform.rotation);

                //set the missles timeout destructor to 5
                clone.timeoutDestructor = 5; 
                }
        }
Example #11
0
 public void Awake()
 {
     entity  = GetComponentInParent <Entity>();
     reload *= entity.kReload;
     if (!prefabMissle)
     {
         if (entity.missles.ContainsKey(entity.defaulTypeMIssle))
         {
             prefabMissle = entity.missles[entity.defaulTypeMIssle];
         }
     }
 }
Example #12
0
 private void OnCollisionEnter(Collision col)
 {
     if (col.gameObject.tag == "Attack")
     {
         Missle missle = col.gameObject.GetComponent <Missle>();
         if (missle != null)
         {
             TakeDamage(missle.getDamage());
             Debug.Log("Hit for: " + missle.getDamage());
             return;
         }
     }
 }
Example #13
0
    public void SeperateFromHere()
    {
        GameObject newM = (GameObject)Instantiate(MissleEditor.current.misslePrefab, transform.position, transform.rotation);

        newM.GetComponent <Rigidbody>().isKinematic = false;
        newM.GetComponent <Rigidbody>().velocity    = missle.GetComponent <Rigidbody>().velocity;
        missle.modules.Remove(this);
        missle          = newM.GetComponent <Missle>();
        missle.inEditor = false;
        SyncMissleToMasterParent(missle, this);
        missle.Launch(true);
        parentModule = null;
    }
Example #14
0
    public Missle CreateMissle()
    {
        GameObject missle = Instantiate(misslePrefab, missleOrigin, misslePrefab.transform.rotation) as GameObject;

        missle.AddComponent <Missle>();

        Missle m = missle.GetComponent <Missle>();

        m.Instantiate(this);
        missleCount++;

        return(m);
    }
Example #15
0
 void SyncMissleToMasterParent(Missle m, Module start)
 {
     missle.modules.Remove(this);
     missle = m;
     missle.modules.Add(this);
     transform.parent = m.transform;
     for (int i = 0; i < childModules.Count; i++)
     {
         if (childModules[i] != start)
         {
             childModules[i].SyncMissleToMasterParent(m, start);
         }
     }
 }
        public void Act()
        {
            string misslesList = Resources.misslesList;

            Console.WriteLine($"Enter The Missle Type To Add: ({misslesList})");
            MissleType = Console.ReadLine().ToUpper();
            while (!validation.Validate(MissleType))
            {
                Console.WriteLine("Please enter valid missle type:");
                MissleType = Console.ReadLine().ToUpper();
            }
            Missle missle = MissleFactory.getMissle(MissleType);

            MissleLauncher.AddMissle(missle);
        }
Example #17
0
    public void ShootMissle()
    {
        Enemy      enemy = GetComponent <Enemy>();
        GameObject clone;

        if (enemy.FacingRight)
        {
            clone = Instantiate(missile, missleStartPoint.position, Quaternion.identity) as GameObject;
        }
        else
        {
            clone = Instantiate(missile, missleStartPoint.position, Quaternion.Euler(new Vector3(0f, 0f, 180f))) as GameObject;
        }
        Missle missle = clone.GetComponent <Missle>();

        missle.Init(enemy);
    }
Example #18
0
    public void FireMissle(float offset, float OriginalAngle)
    {
        //Missle missle = Instantiate(Bullet);
        Missle missle = MissleSpawner.instance.getReusable(Bullet);

        //missle.transform.position = transform.position + offset;

        //missle.transform.eulerAngles = new Vector3(0, 0, Vector2.Angle(Vector2.up, direction));
        //float rot_z = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg;
        missle.transform.rotation = Quaternion.Euler(0f, 0f, OriginalAngle);
        missle.transform.position = missle.transform.up * offset + transform.position;
        missle.velocity           = missle.transform.up * missleSpeed + CameraFlow.getSpeed * Vector3.up * camRatio;
        missle.setMissleLife(missleLife);
        missle.setColor(missleColor);
        missle.damage = damage;
        missle.transform.localScale = Vector3.one * bulletScale;
        missle.maxLifeTime          = missleLifeTime;
    }
Example #19
0
    public void FireMissle(float offset, float OriginalAngle, Vector2 parentVelocity)
    {
        //Missle missle = Instantiate(Bullet);
        Missle spawnMissle = MissleSpawner.instance.getReusable(missle);

        //missle.transform.position = transform.position + offset;

        //missle.transform.eulerAngles = new Vector3(0, 0, Vector2.Angle(Vector2.up, direction));
        //float rot_z = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg;
        spawnMissle.transform.rotation = Quaternion.Euler(0f, 0f, OriginalAngle);
        spawnMissle.transform.position = spawnMissle.transform.up * offset + transform.position;
        float sp = missleSpeed > 10 ? 10 : missleSpeed;

        spawnMissle.velocity = (Vector2)spawnMissle.transform.up * sp + parentVelocity;
        spawnMissle.setMissleLife((int)bulletLife);
        spawnMissle.damage      = damagePerBullet;
        spawnMissle.maxLifeTime = bulletsLifetime;
    }
Example #20
0
    IEnumerator spawnLoop()
    {
        while (true)
        {
            yield return(new WaitForSeconds(spawnRate));

            float c = ((avgMeteors - meteorHolder.live) * chance);
            if (c < chance)
            {
                c = chance;
            }
            liveM = meteorHolder.live;
            if (Random.value < c)
            {
                Missle  meteor     = MissleSpawner.instance.getReusable(prefab);
                Vector2 spawnPoint = CameraFlow.outSideScreen(MathHelper.DegreeToVector2(Random.value * 360));
                meteor.transform.position = spawnPoint;
                meteor.calculateProperties();
            }
        }
    }
Example #21
0
    public void OnTriggerEnter2D(Collider2D collision)
    {
        if (dead)
        {
            return;
        }

        UnitLife unit = collision.GetComponentInParent <UnitLife>();

        if (unit)
        {
            onHitShip(unit, collision);
        }
        else
        {
            Missle missle = collision.GetComponentInParent <Missle>();
            if (missle)
            {
                if (missle.GetType() == typeof(Meteor))
                {
                    clife = 0;
                }
                clife -= missle.damage;
            }
            else
            {
                clife -= 1f;
            }

            if (clife < 0)
            {
                dead = true;
            }
            else
            {
                OnCollision();
            }
        }
    }
Example #22
0
    protected override CastResult OnCast()
    {
        for (int i = 0, length = Random.Range(MissleMinCount, MissleMaxCount + 1); i < length; ++i)
        {
            if (ReleaseFX)
            {
                EffectPlayer.PlayOnTransform(ReleaseFX, ReleaseFXPoint);
            }
            if (ReleaseSE)
            {
                AudioSystem.Instance.PlayOnTransform(ReleaseSE, ReleaseFXPoint);
            }
            Missle missle = Instantiate(MisslePrefab, transform.position, transform.rotation).GetOrAddComponent <Missle>();
            switch (LockType)
            {
            case SkillLockType.Position:
                switch (MissleType)
                {
                case Type.Bullet:
                    missle.InitBullet(TargetPos, MissileSpeed, Settlement);
                    break;

                default:
                    missle.Init(TargetPos, MissileSpeed, Settlement);
                    break;
                }
                break;

            case SkillLockType.NoLock:
                switch (MissleType)
                {
                case Type.Bullet:
                    //missle.InitBullet(TargetPos, MissileSpeed, Settlement);
                    break;

                default:
                    missle.gameObject.AddComponent <SphereCollider>().isTrigger = true;
                    missle.gameObject.AddComponent <Rigidbody>().isKinematic    = true;
                    missle.InitFlyFront(Master.transform.forward, MissileSpeed, SkillMaxRange, (hitObj, missleScript) =>
                    {
                        if (hitObj)
                        {
                            InteractiveObj target = hitObj.GetComponent <InteractiveObj>();
                            if (target)
                            {
                                if (target.IsAlive && target.IsEnemy(Master.Camp))
                                {
                                    Settlement(target);
                                    Destroy(missleScript.gameObject);
                                }
                                return;
                            }
                            Q_SceneObj sceneObj = hitObj.GetComponent <Q_SceneObj>();
                            if (sceneObj)
                            {
                                switch (sceneObj.objType)
                                {
                                case Q_SceneObj.Type.Skill:
                                case Q_SceneObj.Type.Item:
                                case Q_SceneObj.Type.NeedItem:
                                    break;

                                default:
                                    return;
                                }
                            }
                        }
                        if (HitFX)
                        {
                            EffectPlayer.PlayAtPos(HitFX, missleScript.transform.position);
                        }
                        if (HitSE)
                        {
                            AudioSystem.Instance.PlayAtPos(HitSE, missleScript.transform.position);
                        }
                        missleScript.Alive = false;
                        Destroy(missleScript.gameObject);
                    });
                    break;
                }
                break;

            default:
                if (Target)
                {
                    missle.Init(Target.transform, MissileSpeed, (tsf) => Settlement(tsf.GetComponent <InteractiveObj>()));
                }
                else
                {
                    missle.Init(TargetPos, MissileSpeed, Settlement);
                }
                break;
            }
            missle.SetLifeTime(MissleLifeTime);
            if (FlySE)
            {
                AudioSystem.Instance.PlayOnTransform(FlySE, missle.transform);
            }
        }
        return(CastResult.Success);
    }
Example #23
0
 public void DestroyMissle(Missle missle, bool explode = true)
 {
     _destroyed.Add(missle);
 }
Example #24
0
    void Update()
    {
        Enemy closestEnemy = GetClosestEnemy();

        if (closestEnemy != null && barrel != null)
        {
            barrel.AimAt(closestEnemy.transform.position);
        }

        if (shootCooldownCounter > 0)
        {
            shootCooldownCounter -= Time.deltaTime;
            if (shootCooldownCounter < 0)
            {
                shootCooldownCounter = 0;
            }
        }
        else
        {
            if (autoAim)
            {
                if (closestEnemy != null && Vector2.Distance(transform.position, closestEnemy.transform.position) < 18)
                {
                    RequestAutoFire(closestEnemy.transform.position);
                }
            }
        }

        if (shotQueued && shootCooldownCounter <= 0)
        {
            shotQueued           = false;
            shootCooldownCounter = fireRate[upgradeTier];



            if (!Physics2D.Raycast(projectileSpawn.position, queuedShotCrosshair - new Vector2(projectileSpawn.position.x, projectileSpawn.position.y), 40, friendlyLayers))
            {
                switch (projectileType)
                {
                case ProjectileType.BULLET:
                    Bullet bullet = Instantiate(bulletPrefab, projectileSpawn.position, Quaternion.identity);
                    bullet.Initiate(queuedShotCrosshair - new Vector2(projectileSpawn.position.x, projectileSpawn.position.y), damage[upgradeTier], bulletSpeed[upgradeTier]);
                    SoundController.PlayShoot();
                    break;

                case ProjectileType.LASER:
                    RaycastHit2D hit = Physics2D.Raycast(projectileSpawn.position, queuedShotCrosshair - new Vector2(projectileSpawn.position.x, projectileSpawn.position.y), 40, enemyLayers);
                    Vector2      end = Vector2.zero;
                    SoundController.PlayLaser();
                    if (hit)
                    {
                        Enemy enemy = hit.collider.gameObject.GetComponent <Enemy>();
                        if (enemy != null)
                        {
                            enemy.Damage(damage[upgradeTier]);
                        }
                        end = hit.point;
                        Laser laser = Instantiate(laserPrefab, projectileSpawn.position, Quaternion.identity);
                        laser.Initiate(new Vector2(projectileSpawn.position.x, projectileSpawn.position.y), end);
                    }
                    else
                    {
                        end = queuedShotCrosshair - new Vector2(projectileSpawn.position.x, projectileSpawn.position.y);
                        end.Normalize();

                        //max laser distance
                        end *= 40;
                        Laser laser = Instantiate(laserPrefab, projectileSpawn.position, Quaternion.identity);
                        laser.Initiate(new Vector2(projectileSpawn.position.x, projectileSpawn.position.y), new Vector2(projectileSpawn.position.x, projectileSpawn.position.y) + end);
                    }
                    break;

                case ProjectileType.MISSLE:
                    Missle missle = Instantiate(misslePrefab, projectileSpawn.position, Quaternion.identity);
                    missle.Initiate(queuedShotCrosshair - new Vector2(projectileSpawn.position.x, projectileSpawn.position.y), new Vector2(projectileSpawn.position.x, projectileSpawn.position.y), queuedShotCrosshair, damage[upgradeTier], bulletSpeed[upgradeTier], explosionRadius[upgradeTier]);
                    SoundController.PlayShoot();
                    break;
                }
            }
        }
    }
Example #25
0
        /// <summary>
        /// Fires a missle.
        /// </summary>
        public void FireMissle()
        {
            // Spawn a missle entity.
            var sprite = new StaticSprite(Vector2.One * 2.0f, m_missleTexture, "MISC_Missle", new Rectangle(4, 2, 24, 28));
            var missle = new Missle(sprite);

            var direction = -Vector2.UnitY;
            direction = new Vector2(
                direction.X * MathCore.Cos(this.SceneNode.Rotation) + -direction.Y * MathCore.Sin(this.SceneNode.Rotation),
                direction.Y * MathCore.Cos(this.SceneNode.Rotation) + direction.X * MathCore.Sin(this.SceneNode.Rotation));

            this.World.Add(missle);

            missle.Position = this.SceneNode.Position + (direction * 8.0f);
            missle.Rotation = this.SceneNode.Rotation;
            missle.Body.LinearVelocity = this.Body.LinearVelocity + (direction * 50.0f);

            // Play the sound.
            m_soundMissleLaunch.Play();
        }