コード例 #1
0
    void SpawnLaser(TargetCallback target_callback)
    {
        HomingProjectile new_laser = Instantiate(laser, transform.position, Quaternion.identity);

        new_laser.SetSource(owner);
        new_laser.transform.position = transform.position;

        SoundManager.instance?.LocalPlaySfx(laser_sfx);

        Transform target = target_callback.target.stats.center_mass;

        new_laser.SetTarget(target_callback.target);
        new_laser.SetOnHit((character, b) => target_callback.success_callback(character));

        float   angle     = 0;
        Vector3 to_target = target.position - transform.position;

        if (to_target.x < 0)
        {
            angle = Vector2.SignedAngle(Vector2.left, to_target) + 180;
        }
        else
        {
            angle = Vector2.SignedAngle(Vector2.right, to_target);
        }

        new_laser.transform.rotation = Quaternion.Euler(0, 0, angle);
    }
コード例 #2
0
    public override void perform(CombatEntity caster, CombatEntity target)
    {
        base.perform(caster, target);
        GameObject projectileGameobject = new GameObject();

        projectileGameobject.transform.position = caster.transform.position;
        HomingProjectile hp = projectileGameobject.AddComponent <HomingProjectile>();

        hp.Setup(spellVFX, target, this, projectileSpeed);
    }
コード例 #3
0
ファイル: RocketSpawner.cs プロジェクト: mattgaut/Portfolio
    public HomingProjectile Spawn()
    {
        if (can_spawn)
        {
            anim.SetTrigger("Spawn");

            HomingProjectile new_rocket = Instantiate(rocket, spawn_point.position, transform.rotation);
            new_rocket.SetTarget(homing_target);
            new_rocket.GetComponent <Attack>().SetOnHit(on_hit);
            return(new_rocket);
        }
        return(null);
    }
コード例 #4
0
 public override void AttackAction(Unit target)
 {
     for (int i = 0; i < bulletDirections.Length; i++)
     {
         HomingProjectile bullet = GameObject.Instantiate(Links.links.homingBullet).GetComponent <HomingProjectile> ();
         bullet.Attacker = this;
         bullet.team     = team;
         bullet.damage   = attackDamage;
         bullet.lifeTime = bulletRange / bulletSpeed;
         bullet.speed    = bulletSpeed;
         bullet.Launch(target, transform.position + Vector3.up * centerHeight + transform.TransformVector(bulletDirections[i]) * 0.5f, transform.TransformVector(bulletDirections[i]));
     }
 }
コード例 #5
0
    protected override void OnKill(Character killer, Character killed)
    {
        HomingProjectile new_projectile = Instantiate(projectile);

        new_projectile.transform.position = killer.stats.center_mass.position;

        new_projectile.LaunchTowardsTarget(Vector2.up);

        new_projectile.SetSource(killer);
        new_projectile.SetOnHit(OnHit);
        Character target = target_collector.GetRandomTarget();

        new_projectile.SetTarget(target);
    }
コード例 #6
0
    protected override void OnSpendEnergy(Character source, float spent)
    {
        HomingProjectile new_projectile = Instantiate(projectile);

        new_projectile.transform.position = source.stats.center_mass.position;

        new_projectile.LaunchTowardsTarget(Vector2.up);

        new_projectile.SetSource(source);
        new_projectile.SetOnHit((hit, hit_by) => OnHit(hit, hit_by, spent));
        Character target = target_collector.GetRandomTarget();

        new_projectile.SetTarget(target);
    }
コード例 #7
0
ファイル: Bowser.cs プロジェクト: hominhtri1/Unity-2D-Game
    void FireHomingProjectile()
    {
        animator.SetTrigger("Shoot");

        audioSource.PlayOneShot(shootAudio);

        GameObject clone =
            Instantiate(homingProjectile, transform.position + Vector3.up * 1.8f, Quaternion.identity);

        HomingProjectile homingProjectileComp = clone.GetComponent <HomingProjectile>();

        homingProjectileComp.SetSpeed(1.5f);
        homingProjectileComp.SetSelfDestruct(8);
    }
コード例 #8
0
ファイル: BossShooting.cs プロジェクト: K33W1/MOBIGAM-MP
    private IEnumerator FiringLoop()
    {
        yield return(new WaitForSeconds(startDelayDuration));

        while (true)
        {
            for (int i = 0; i < burstShotCount; i++)
            {
                HomingProjectile projectile = HomingProjectilePooler.Instance.GetPooledObject();
                projectile.Launch(projectileLayer.MaskToLayer(), projectileSpawnPoint, target);

                yield return(new WaitForSeconds(burstShotRate));
            }

            yield return(new WaitForSeconds(cooldownDuration));
        }
    }
コード例 #9
0
ファイル: AttackOrder.cs プロジェクト: DennisMajvall/Enfo
    void AttackTarget()
    {
        isChannelingAttack   = true;
        currentChannelTime  += Time.deltaTime;
        moveOrder.hasStarted = false;
        if (currentChannelTime >= channelTime)
        {
            currentChannelTime = 0f;
            currentCooldown    = cooldown;
            isChannelingAttack = false;

            GameObject projectile = (GameObject)GameObject.Instantiate(projectilePrefab, currentPosition, new Quaternion());

            HomingProjectile projectileScript = projectile.GetComponent <HomingProjectile>();
            projectileScript.Target = target;
            projectileScript.Owner  = self;
        }
    }
コード例 #10
0
 override public void Update()
 {
     if (amountOfRocketsInChamber > 0)
     {
         secondsTilNextRound -= Time.deltaTime;
         if (secondsTilNextRound <= 0)
         {
             HomingProjectile rocket = Instantiate(prefabRocket, spawnPoint.position, Quaternion.identity);
             rocket.Launch(car.driver, car.state.up);
             secondsTilNextRound = secondsBetweenLaunches;
             amountOfRocketsInChamber--;
         }
     }
     else
     {
         base.Update(); // do regular cooldown
     }
 }
コード例 #11
0
    public override void ExecuteFire()
    {
        if (!target.isAlive)
        {
            return;
        }
        GameObject obj = Instantiate(projectilePrefab.gameObject) as GameObject;

        obj.GetComponent <ProjectileBase>().SetDamage(damage);
        obj.transform.position = shootPos.position;
        HomingProjectile homing = obj.GetComponent <HomingProjectile>();

        homing.target = target;
        homing.BeginHoming();
        if (shootSound != null)
        {
            AudioManager.instance.PlayAudio(shootSound);
        }
        StartCoroutine(FireDelay());
    }
コード例 #12
0
    // Update is called once per frame
    public override void FixedUpdate()
    {
        base.FixedUpdate();

        if (target)
        {
            if (Vector3.Distance(transform.position, target.position) < searchRange)
            {
                List <Transform> toAttack = new List <Transform> ();
                Collider[]       nearby   = Physics.OverlapSphere(target.position, searchRange, Game.game.enemyLayer);
                for (int i = 0; i < nearby.Length; i++)
                {
                    if (toAttack.Count < maxCluster)
                    {
                        if (nearby [i].GetComponent <Enemy> ().type == target.GetComponent <Enemy>().type)
                        {
                            toAttack.Add(nearby[i].transform);
                        }
                    }
                }

                for (int i = 0; i < toAttack.Count; i++)
                {
                    GameObject       cluster = (GameObject)Instantiate(clusterMissle, transform.position, transform.rotation);
                    HomingProjectile missle  = cluster.GetComponent <HomingProjectile>();
                    missle.target   = toAttack[i];
                    missle.damage   = Mathf.RoundToInt((float)damage / (float)toAttack.Count);
                    missle.velocity = transform.right * speed * 1.5f;
                    missle.parent   = parent;
                    missle.Initialize();
                }

                Destroy(Instantiate(hitParticle, transform.position, Quaternion.identity), 1f);
                ReturnToPool();
            }
        }
    }
コード例 #13
0
ファイル: RapidFire2.cs プロジェクト: mattcoo21/Montra
    //Shoot
    void Shoot()
    {
        if (isPaused == false)
        {
            if (isOut == true)
            {
                if (shoot == true)
                {
                    muzzleflash.Play();

                    RaycastHit hit;
                    if (Physics.Raycast(fpsCam.transform.position, fpsCam.transform.forward, out hit, range))
                    {
                        Debug.Log(hit.transform.name);

                        //Enemies
                        Target target = hit.transform.GetComponent <Target>();
                        if (target != null)
                        {
                            target.TakeDamage(damage);
                        }

                        if (hit.rigidbody != null)
                        {
                            hit.rigidbody.AddForce(-hit.normal * impactForce);
                        }

                        //Windows
                        WindowBreak2 target2 = hit.transform.GetComponent <WindowBreak2>();
                        if (target2 != null)
                        {
                            target2.TakeDamage(damage);
                        }

                        if (hit.rigidbody != null)
                        {
                            hit.rigidbody.AddForce(-hit.normal * impactForce);
                        }

                        //Cameras
                        CameraBreak target3 = hit.transform.GetComponent <CameraBreak>();
                        if (target3 != null)
                        {
                            target3.TakeDamage(damage);
                        }

                        if (hit.rigidbody != null)
                        {
                            hit.rigidbody.AddForce(-hit.normal * impactForce);
                        }

                        //Vents
                        VentBreak target4 = hit.transform.GetComponent <VentBreak>();
                        if (target4 != null)
                        {
                            target4.TakeDamage(damage);
                        }

                        if (hit.rigidbody != null)
                        {
                            hit.rigidbody.AddForce(-hit.normal * impactForce);
                        }

                        //Explosive Barrels
                        HomingProjectile target5 = hit.transform.GetComponent <HomingProjectile>();

                        if (target5 != null)
                        {
                            target5.TakeDamage(damage);
                        }

                        if (hit.rigidbody != null)
                        {
                            hit.rigidbody.AddForce(-hit.normal * impactForce);
                        }

                        //Boss
                        muythicc target6 = hit.transform.GetComponent <muythicc>();

                        if (target6 != null)
                        {
                            target6.TakeDamage(damage);
                        }

                        if (hit.rigidbody != null)
                        {
                            hit.rigidbody.AddForce(-hit.normal * impactForce);
                        }


                        GameObject impactGO = Instantiate(impactEffect, hit.point, Quaternion.LookRotation(hit.normal));
                        Destroy(impactGO, 2f);
                    }
                }
            }
        }
    }
コード例 #14
0
ファイル: RocketSpawner.cs プロジェクト: mattgaut/Portfolio
 public void Ini(HomingProjectile rocket_prefab, Attack.OnHit on_hit, Transform target)
 {
     rocket        = rocket_prefab;
     this.on_hit   = on_hit;
     homing_target = target;
 }
コード例 #15
0
 public void SetLaser(HomingProjectile laser)
 {
     this.laser = laser;
 }