Exemple #1
0
    private void SendMessageToNearObjects()
    {
        Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position, radius);
        foreach (Collider2D c in colliders)
        {
            if (IsHittable(c.tag))
            {
                c.gameObject.SendMessage("OnExplosionHit");
            }
        }

        ExplosionEffect effectInstance = Instantiate(explosionEffectPrefab, transform.position, Quaternion.identity, instantiatedObjects.transform).GetComponent <ExplosionEffect>();

        effectInstance.radius = radius;
        effectInstance.Execute();

        if (gameObject.CompareTag("ZombieEnemy"))
        {
            gameObject.GetComponent <EnemyController>().Dead();
        }
        else
        {
            Destroy(gameObject);
        }
    }
Exemple #2
0
    void Start()
    {
        name = "Track";

        vehicleAudioSource     = vehicle.GetComponent <AudioSource>();
        carController          = vehicle.GetComponent <CarController>();
        vehicleExplosionEffect = vehicle.GetComponent <ExplosionEffect>();
        trackSettings          = GetComponent <TrackSettings>();

        InitEmissionMaterial();
        InitTrackSegments();
        InitBrandingSigns();
        InitBackgroundEffects();
        InitWeather();
        InitVehicleStartBox();
        InitLapEndBox();
        InitTimeBoosts();
        InitObstacles();
        InitCarProps();
        InitBackground();
        InitWall();
        InitExcludeMobile();

        InitMeshCombiner();
    }
Exemple #3
0
    public void Disable()
    {
        ExplosionEffect explosion = m_ExplosionFeedbackManager.getUsableExplosionEffect();

        explosion.pop(transform.position);
        transform.gameObject.SetActive(false);
    }
    private void ExplosionEgg()
    {
        int layerMask = MyUtils.GetLayerMaskByString("Enemy");


        Collider2D[] colls = Physics2D.OverlapCircleAll(this.transform.position, explosionRadius, layerMask);
        if (colls == null)
        {
            return;
        }

        for (int i = 0; i < colls.Length; i++)
        {
            CharacterInfo characterInfo = colls[i].gameObject.GetComponent <CharacterInfo>();
            if (characterInfo != null)
            {
                characterInfo.GetDamage(power);
            }
        }

        //이펙트
        ExplosionEffect effect = ObjectManager.Instance.effectPool.GetItem();

        if (effect != null)
        {
            effect.Initilaize(this.transform.position, "bazooka", 0.5f, explosionRadius * 2f);
        }

        //사운드
        SoundManager.Instance.PlaySoundEffect("explosion");

        Destroy(this.gameObject);
    }
Exemple #5
0
 private void Start()
 {
     spawnPointManager = gameObject.GetComponent <SpawnPointManager>();
     scoreManager      = gameObject.GetComponent <ScoreManager>();
     explodePosition   = new Vector3(transform.position.x, transform.position.y + 3.5f, transform.position.z);
     explosion         = gameObject.AddComponent <ExplosionEffect>();
 }
Exemple #6
0
    void PropateExplotion(int x, int y, int limit, int xStep, int yStep)
    {
        Debug.Log("X: " + x + " Y: " + y);
        if (limit >= ExplotionRange)
        {
            return;
        }

        BaseTile tileToCheck = tile.GetNeigbourInDirection(x, y);

        if (tileToCheck.GetType() == typeof(Wall))
        {
            return;
        }
        ExplosionEffect SFX = Instantiate(effect, tileToCheck.transform.position, Quaternion.identity);

        tileToCheck.AddObjectToTile(SFX);

        tileToCheck.GetComponent <IDamage>().TakeDamage(Damage);
        if (xStep == 0 && yStep == 0)
        {
            return;
        }

        limit++;

        PropateExplotion(x + xStep, y + yStep, limit, xStep, yStep);
    }
Exemple #7
0
    /// <summary>
    /// Detect collisions when rocket explode and apply damage to characters near the explosion
    /// </summary>
    /// <param name="body">Object which detect collision</param>
    private void OnBodyEnter(object body)
    {
        if (!collisionObject.Disabled)
        {
            // Look for characters and remove some health
            foreach (Node node in areaExplosion.GetOverlappingBodies())
            {
                if (node is Character)
                {
                    Character character = node as Character;
                    character.Health -= DAMAGE;
                }
            }

            // Launch the explosion animation
            ExplosionEffect explosionEffect = GameResources.GetInstance().Get <ExplosionEffect>();
            explosionEffect.SetGlobalPosition(this.GlobalPosition);
            explosionEffect.SetScale(Vector2.One * EXPLOSION_SIZE);
            explosionEffect.Damage = DAMAGE;
            this.GetTree().GetRoot().GetNode("Main").CallDeferred("add_child", explosionEffect);
            //this.GetTree().GetRoot().GetNode("Main").AddChild(explosionEffect);

            this.QueueFree();
        }
    }
    /// <summary>
    /// Explode the grenade when the timer is over
    /// </summary>
    /// <param name="source">Source of the event</param>
    /// <param name="e">Additional information about the event</param>
    private void OnTimeOver(System.Object source, ElapsedEventArgs e)
    {
        timer.Stop();
        timer.Dispose();

        // Look for characters which are hit
        foreach (Node node in areaExplosion.GetOverlappingBodies())
        {
            if (node is Character)
            {
                Character character = node as Character;
                character.Health -= DAMAGE;
            }
        }

        // Execute explosion animation
        ExplosionEffect explosionEffect = GameResources.GetInstance().Get <ExplosionEffect>();

        explosionEffect.SetGlobalPosition(this.GlobalPosition);
        explosionEffect.SetScale(Vector2.One * EXPLOSION_SIZE);
        explosionEffect.Damage = DAMAGE;
        this.GetTree().GetRoot().GetNode("Main").AddChild(explosionEffect);

        this.QueueFree();
    }
Exemple #9
0
 public void StartExplosionEffect(ExplosionEffect e)
 {
     if (e != null && !explosionEffects.Contains(e))
     {
         explosionEffects.Add(e);
     }
 }
    public void Explode()
    {
        Explosion.Explode(this, explosionDamage, explosionForce,
                          transform.position, explosionRadius);
        ExplosionEffect exp = Instantiate <ExplosionEffect>(explosionEffectPrefab);

        exp.transform.position    = transform.position;
        exp.transform.localScale *= explosionRadius / exp.radius;
    }
    public void explode()
    {
        if (exploded)
        {
            return;
        }
        CoalescingEffect.Stop(true);
        PepperField.Stop();
        PepperField.Clear();

        ExplosionEffect.Play(true);
        exploded = true;

        Astronaut plr = Astronaut.TheAstronaut;

        Am.am.oneshot(Am.am.M.FireBallEnemyExplosion);

        //if (Alive && !isStunned())
        //{
        Vector3 dif = (this.transform.position - plr.transform.position);
        float   sc  = 1f;
        float   pre = 1f;

        /*
         * if (premature)
         * {
         *  float f = ((Time.time - StateTime) / StateDuration);
         *  pre = (.25f + (.75f * f));
         *  //ExplosionEffect.transform.localScale = (Vector3.one * pre);
         * } else
         * {
         *
         *  ExplosionEffect.transform.localScale = (Vector3.one );
         * }
         */
        float radius = (4f * sc);  //*pre
        float dist   = (dif.magnitude / radius);

        if (dist < 1f)
        {
            //if ((Time.time - plr.lastDamageTakenTime) >= 1.5f)
            //{
            Vector3 diff = (plr.transform.position - this.transform.position);
            HitsDone += 1f;
            float df = (1f - dist);
            //df = Mathf.Pow(df, 1f/(1f + (1f * Astronaut.AggressionLevelF)));
            if (plr.TakeDamage(80f * df, (diff.normalized * 30f) + new Vector3(0f, plr.JumpSpeed * 2f, 0f)))
            {
                HitsDone += 4f;
            }

            //}
        }

        //}
    }
Exemple #12
0
    protected void ShowEffect()
    {
        //이펙트 호출
        ExplosionEffect effect = ObjectManager.Instance.effectPool.GetItem();

        if (effect != null)
        {
            effect.Initilaize(this.transform.position, effectName, 0.5f, effectsize);
        }
    }
Exemple #13
0
    public void OnCollisionStay2D(Collision2D collision)
    {
        Collider2D other = collision.collider;

        if (action == MonkeyKongActions.RUNNING)
        {
            /* If running, blow up everything it Monkey Kong's path. */
            var           scripts          = other.GetComponents <MonoBehaviour>();
            IExplodable[] interfaceScripts = (
                from a in scripts
                where a.GetType().GetInterfaces().Any(
                    k => k == typeof(IExplodable))
                select(IExplodable) a).ToArray();

            foreach (IExplodable explodable in interfaceScripts)
            {
                explodable.BlowUp(this, 20f);
            }

            if (other.tag == "Room Wall")
            {
                lastSpecialAttack = Time.time;
                Explosion.Explode(this, 20f,
                                  collsionForceModifier * rb.velocity.magnitude, transform.position,
                                  collsionRadiusModifier * rb.velocity.magnitude);

                ExplosionEffect exp = Instantiate <ExplosionEffect>(explosionEffectPrefab);
                exp.transform.position    = transform.position;
                exp.transform.localScale *= collsionRadiusModifier * rb.velocity.magnitude / exp.radius;

                rb.velocity = Vector2.zero;

                dazedTime = collisionDazedDuration;
                action    = MonkeyKongActions.DAZED;
                animator.SetTrigger("Dazed");
            }
        }
        else
        {
            if (other.tag == "Player")
            {
                if (player.lawnPower)
                {
                    TakeDamage(2);
                }
                else
                {
                    PlayerController player = other.GetComponent <PlayerController>();
                    player.TakeDamage(this);
                }
            }
        }
    }
Exemple #14
0
    public override void ActivatePowerUp(string name, Transform origin)
    {
        base.ActivatePowerUp(name, origin);

        List <Collider> enemies = Physics.OverlapSphere(origin.position, radius).ToList();

        for (int i = 0; i < enemies.Count; i++)
        {
            if (!enemies[i].GetComponent <Competitor>() || enemies[i].transform == origin)
            {
                enemies.Remove(enemies[i]);
                i--;
            }
        }
        explodingObject.transform.position = origin.position;
        ExplosionEffect effect = explodingObject.GetComponent <ExplosionEffect>();

        if (effect == null)
        {
            effect = explodingObject.AddComponent <ExplosionEffect>();
        }
        effect.StartExplosion(duration, Vector3.zero);

        if (enemies.Count == 0)
        {
            return;
        }
        else
        {
            foreach (Collider enemy in enemies)
            {
                var rb         = enemy.GetComponent <Rigidbody>();
                var competitor = enemy.GetComponent <Competitor>();

                if (!competitor.untouchable)
                {
                    if (enemy.tag == "Player")
                    {
                        rb.AddExplosionForce(playerPower, origin.position, radius, playerUpwardForce, ForceMode.Impulse);
                    }
                    else
                    {
                        competitor.navMeshOff = true;
                        competitor.GetComponent <AIStateMachine>().enabled = false;
                        rb.AddExplosionForce(power, origin.position, radius, upwardForce, ForceMode.Impulse);


                        competitor.Blast(competitor.transform, 1.0f);
                    }
                }
            }
        }
    }
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (canCollision == false)
        {
            return;
        }
        if (bounceBulletType == BounceBulletType.BillardsBall)
        {
            SoundManager.Instance.PlaySoundEffect("cueGunBounce");
        }
        else if (bounceBulletType == BounceBulletType.tenisBall)
        {
            SoundManager.Instance.PlaySoundEffect("Tenisd");
        }

        ExplosionEffect effect = ObjectManager.Instance.effectPool.GetItem();

        if (effect != null)
        {
            effect.Initilaize(this.transform.position, "revolver", 0.5f, 1f);
        }

        bouncCount += 1;
        if (bouncCount >= bounceMax)
        {
            DestroyBullet();
            return;
        }
        canCollision = false;
        StartCoroutine(CollisionCheckRoutine());

        CharacterInfo chr = collision.gameObject.GetComponent <CharacterInfo>();

        if (chr != null)
        {
            chr.GetDamage(damage);
        }



        int          layerMask = MyUtils.GetLayerMaskExcludeName(bulletType.ToString());
        RaycastHit2D rayHit    = Physics2D.Raycast(this.transform.position, moveDir, 1f, layerMask);

        Vector2 reflectVector = Vector2.Reflect(moveDir, rayHit.normal);

        reflectVector.Normalize();

        if (rb != null)
        {
            moveDir = reflectVector.normalized;
        }
    }
Exemple #16
0
    void Explosion()
    {
        List <Collider> enemies = Physics.OverlapSphere(this.gameObject.transform.position, PUE.DM_radius).ToList();

        for (int i = 0; i < enemies.Count; i++)
        {
            if (!enemies[i].GetComponent <Competitor>() || enemies[i].transform == this.gameObject.transform)
            {
                enemies.Remove(enemies[i]);
                i--;
            }
        }
        explodingObject.transform.position = transform.position;
        ExplosionEffect effect = explodingObject.GetComponent <ExplosionEffect>();

        if (effect == null)
        {
            effect = explodingObject.AddComponent <ExplosionEffect>();
        }
        effect.StartExplosion(duration, Vector3.zero);

        if (enemies.Count == 0)
        {
            return;
        }
        else
        {
            foreach (Collider enemy in enemies)
            {
                var rb         = enemy.GetComponent <Rigidbody>();
                var competitor = enemy.GetComponent <Competitor>();

                if (!competitor.untouchable)
                {
                    if (enemy.tag == "Player")
                    {
                        rb.AddExplosionForce(PUE.DM_playerPower, transform.position, PUE.DM_radius, PUE.DM_playerUpwardForce, ForceMode.Impulse);
                        Destroy(transform.parent.gameObject);
                    }
                    else
                    {
                        competitor.navMeshOff = true;
                        competitor.GetComponent <AIStateMachine>().enabled = false;
                        rb.AddExplosionForce(PUE.DM_power, transform.position, PUE.DM_radius, PUE.DM_upwardForce, ForceMode.Impulse);
                        Destroy(transform.parent.gameObject);
                        competitor.Blast(competitor.transform, duration);
                    }
                }
            }
        }
    }
Exemple #17
0
    public void Slam()
    {
        Explosion.Explode(this, 20f,
                          slamForce, transform.position,
                          slamRadius);

        ExplosionEffect exp = Instantiate <ExplosionEffect>(explosionEffectPrefab);

        exp.transform.position    = transform.position;
        exp.transform.localScale *= slamRadius / exp.radius;

        lastSpecialAttack = Time.time;
        rb.velocity       = Vector2.zero;
    }
    private void DoExplosion(float modifier, Vector3 contact_point, float magnitude, int contactType)
    {
        float exp_force = GetExplosionForce(modifier, magnitude);

        if (exp_force > 200)
        {
            SoundEffectManager.GetInstance().PlaySoundEffect(contact_point, exp_force, contactType);
            rb.AddExplosionForce(exp_force, contact_point, EXPLOSION_RADIUS);
            ExplosionEffect.GetInstance().MakeExplosionEffect(contact_point, exp_force);
            //Debug.Log("Did EXPLOSION with force " + exp_force.ToString() + "\n");
            SendEventPlayerHit(exp_force);
        }
        //add particle effect
    }
    private void OnTriggerEnter2D(Collider2D collision)
    {
        CharacterInfo chr = collision.gameObject.GetComponent <CharacterInfo>();

        if (chr != null)
        {
            chr.GetDamage(damage);
            //이펙트 호출
            ExplosionEffect effect = ObjectManager.Instance.effectPool.GetItem();
            if (effect != null)
            {
                effect.Initilaize(chr.transform.position, "revolver", 0.5f, 1f);
            }
        }
    }
 void Start()
 {
     if (tg == "SWORD")
     {
         PAIN_MODIFIER   = 0.75f;
         DAMAGE_MODIFIER = 2f;
         SWORD_MODIFIER  = 1f;
     }
     if (tg == "SHELL")
     {
         PAIN_MODIFIER   = 2f;
         DAMAGE_MODIFIER = 0.75f;
         SWORD_MODIFIER  = 0f;
     }
     ee = ExplosionEffect.GetInstance();
 }
Exemple #21
0
        public override void FireBullet(Vector3 firePos, Vector3 fireDirection)
        {
            if (canFire() == false)
            {
                return;
            }

            FireDelayOn();
            PlayFireAnim();
            useBullet();

            //흔들리는 효과
            CameraController.Instance.ShakeCamera(3f, 0.4f);
            int layerMask = MyUtils.GetLayerMaskByString("Enemy");

            SoundManager.Instance.PlaySoundEffect("thunder");

            Collider2D[] colls = Physics2D.OverlapCircleAll(firePos, explosionRadius, layerMask);
            if (colls == null)
            {
                return;
            }

            for (int i = 0; i < colls.Length; i++)
            {
                CharacterInfo characterInfo = colls[i].gameObject.GetComponent <CharacterInfo>();
                if (characterInfo != null)
                {
                    ExplosionEffect effect = ObjectManager.Instance.effectPool.GetItem();
                    if (effect != null)
                    {
                        effect.Initilaize(characterInfo.transform.position + Vector3.up, "Thunder", 0.5f, 3f);
                    }

                    characterInfo.GetDamage(multiDamage);
                }
            }


            //이펙트 호출
            ExplosionEffect effect2 = ObjectManager.Instance.effectPool.GetItem();

            if (effect2 != null)
            {
                effect2.Initilaize(firePos + Vector3.down * 0.5f, "PowerGauntletEffect", 0.5f, 2f);
            }
        }
Exemple #22
0
        protected void FireHitScan(Vector3 firePos, Vector3 fireDirection, int damage, Color color = default(Color), bool setPush = false, float pushPower = 3f)
        {
            int          layerMask = (1 << LayerMask.NameToLayer("Enemy") | (1 << LayerMask.NameToLayer("Tile")) | (1 << LayerMask.NameToLayer("ItemTable") | (1 << LayerMask.NameToLayer("EnemyTurret"))));
            Ray2D        ray       = new Ray2D(firePos, fireDirection);
            RaycastHit2D hit       = Physics2D.Raycast(firePos, fireDirection, 100f, layerMask);

            if (hit == true)
            {
                CharacterInfo characterInfo = hit.transform.gameObject.GetComponent <CharacterInfo>();
                if (characterInfo != null)
                {
                    if (setPush == true)
                    {
                        characterInfo.SetPush(firePos, pushPower, 0);
                    }

                    characterInfo.GetDamage(damage);
                    if (characterInfo.IsDead == true)
                    {
                        GoogleService.Instance.SetCharacterAchivement(CharacterType.Sniper);
                    }
                }
                //라인 그려주기
                DrawLiner line = ObjectManager.Instance.linePool.GetItem();
                if (line != null)
                {
                    line.Initialize(firePos, hit.point);
                }

                if (color != default(Color))
                {
                    line.SetLineColor(color);
                }

                //이펙트
                //이펙트 호출
                ExplosionEffect effect = ObjectManager.Instance.effectPool.GetItem();
                if (effect != null)
                {
                    effect.Initilaize(hit.point, "revolver", 0.5f, 1f);
                }
            }
        }
Exemple #23
0
    private new void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.CompareTag("ItemTable") == true)
        {
            return;
        }


        int layerMask = MyUtils.GetLayerMaskByString("Enemy");

        Collider2D[] colls = Physics2D.OverlapCircleAll(this.transform.position, 1.5f, layerMask);
        if (colls == null)
        {
            return;
        }

        for (int i = 0; i < colls.Length; i++)
        {
            CharacterInfo characterInfo = colls[i].gameObject.GetComponent <CharacterInfo>();
            if (characterInfo != null)
            {
                characterInfo.GetDamage(damage);
            }
        }

        //이펙트 호출
        ExplosionEffect effect = ObjectManager.Instance.effectPool.GetItem();

        if (effect != null)
        {
            effect.Initilaize(this.transform.position, "bazooka", 0.5f, 3f);
        }

        SoundManager.Instance.PlaySoundEffect("explosion");

        //흔들리는 효과
        CameraController.Instance.ShakeCamera(3f, 0.4f);

        //삭제
        DestroyBullet();
    }
    private new void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.CompareTag("ItemTable") == true)
        {
            return;
        }

        CharacterInfo chr = collision.gameObject.GetComponent <CharacterInfo>();

        if (chr != null)
        {
            chr.GetDamage(damage);
            DestroyBullet();

            ExplosionEffect effect = ObjectManager.Instance.effectPool.GetItem();
            if (effect != null)
            {
                effect.Initilaize(this.transform.position, "revolver", 0.5f, 1f);
            }
        }
    }
Exemple #25
0
        private BehaviourState DiveBombTarget()
        {
            //if the AI is moving towards it's target location
            if ((m_AIReference.transform.position - m_TargetLocation).magnitude >= MathFunc.LargeEpsilon)
            {
                m_AIReference.transform.position += MathFunc.MoveToward(m_AIReference.transform.position, m_TargetLocation, m_KamikazeSpeed);

                return(BehaviourState.Running);
            }
            //if it is close enough to the location that it can explode, then go for it
            else
            {
                Collider[] colliders = Physics.OverlapSphere(m_AIReference.transform.position, m_ExplosionRadius * 0.5f, m_AIReference.TargetLayerMask);

                foreach (Collider collider in colliders)
                {
                    Player p = collider.GetComponent <Player>();

                    if (p != null)
                    {
                        Status[] statuses = { Status.Burn };
                        p.photonView.RPC("TakeDamage", PhotonTargets.All, m_Damage, statuses);
                        p.ApplyForceOverNetwork((p.transform.position - m_AIReference.transform.position).normalized * m_ExplosionPushBack, ForceMode.Impulse);
                    }
                }

                //instantiate the explosion over the network
                GameObject      explosion = PhotonNetwork.Instantiate("ExplosionRenderer", m_AIReference.transform.position, m_AIReference.transform.rotation, 0);
                ExplosionEffect effect    = explosion.GetComponent <ExplosionEffect>();

                //set the required activation stuff over the network
                effect.photonView.RPC("ActivateExplosion", PhotonTargets.All, m_ExplosionRadius);
                //set the health value of the phoenix to be -1 because the kamikaze attack kills the AI
                m_AIReference.Health.HP = -1;

                //reset the cooldown timer here
                m_Timer = 0.0f;
                return(BehaviourState.Succeed);
            }
        }
Exemple #26
0
    private void OnCollisionEnter(Collision collision)
    {
        if (!m_CanCollide)
        {
            return;
        }
        SoundManager.GetInstance().photonView.RPC("PlaySFXNetworked", PhotonTargets.All, "GrenadeExplosion", transform.position);
        //instantiate explosion render
        GameObject      explosionRenderer = (GameObject)(Instantiate(Resources.Load("Effects/ExplosionRenderer"), gameObject.transform.position, Quaternion.identity));
        ExplosionEffect explosionEffect   = explosionRenderer.GetComponent <ExplosionEffect>();

        explosionEffect.ActivateExplosion(Radius);

        m_CanCollide = false;
        gameObject.SetActive(false); //return object to pool

        Collider[] colliders;        //stores all colliders that were hit
        m_EnemiesHit.Clear();

        colliders = Physics.OverlapSphere(gameObject.transform.position, Radius, m_LayerMask);

        //if we collided with any objects of our specific target layer mask then they take damage
        for (int i = 0; i < colliders.Length; i++)
        {
            AITakeDamageInterface enemy = colliders[i].transform.root.GetComponent <AITakeDamageInterface>();

            if (enemy != null && !m_EnemiesHit.Contains(enemy)) //if the collided object has a health component
            {
                m_EnemiesHit.Add(enemy);

                if (PhotonNetwork.isMasterClient)
                {
                    enemy.TakeDamage(m_ProjectileOwner, m_Damage, null, AIUtilits.GetCritMultiplier(colliders[i].gameObject));
                }
            }
        }
    }
Exemple #27
0
 void Awake()
 {
     instance = this;
 }
 public override bool getPowerup(BCBlockGameState gstate,Paddle onPaddle, GamePowerUp gpower)
 {
     if(onPaddle==null) return false;
     //don't accept it.
     //reject it with great prejudice.
     //move the location temporarily.
     PointF oldposition = gpower.Location;
     SizeF oldsize = gpower.Size;
     gpower.Location = PointF.Empty;
     //draw to a temporary bitmap.
     Bitmap drawtothis = new Bitmap(16, 16);
     Graphics useg = Graphics.FromImage(drawtothis);
     useg.Clear(Color.Transparent);
     gpower.Draw(useg);
     //reset position.
     gpower.Location = oldposition;
     gpower.Size = oldsize;
     //get average.
     var averagedpixel = Color.FromArgb((int)((from p in drawtothis.getPixels() select p.ToArgb()).Average()));
     ExplosionEffect ee = new ExplosionEffect(gpower.Location, 72);
     ee.ExplosionColor = averagedpixel;
     ee.DamageBlocks = false;
     ee.DamagePaddle = false;
     gstate.Defer(() => gstate.GameObjects.AddLast(ee));
     //move  gpower to above the paddle, and invert the Y speed.
     gpower.Location = new PointF(gpower.Location.X, onPaddle.BlockRectangle.Top - gpower.getRectangle().Height - 1);
     gpower.Velocity = new PointF(gpower.Velocity.X, -Math.Abs(gpower.Velocity.Y)*1.1f);
     return true;
 }
Exemple #29
0
    public IEnumerator SkillRoutine()
    {
        while (true)
        {
            if (Input.GetKeyDown(KeyCode.Mouse0))
            {
                if (CanFire() == true)
                {
#if UNITY_EDITOR
                    Vector2      touchPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
                    RaycastHit2D rayHit   = Physics2D.Raycast(touchPos, Vector2.zero, 0.1f, snipingLayerMask);
                    if (rayHit.collider != null)
                    {
                        CharacterInfo monster = rayHit.collider.gameObject.GetComponent <CharacterInfo>();
                        if (monster != null)
                        {
                            if (monster.IsDead == false)
                            {
                                UseBullet();
                                monster.GetDamage(snipingPower);
                            }
                        }

                        //이펙트 호출
                        ExplosionEffect effect = ObjectManager.Instance.effectPool.GetItem();
                        if (effect != null)
                        {
                            effect.Initilaize(rayHit.transform.position, "SniperAim", 0.5f, 2f);
                            effect.SetAlpha(150f);
                        }

                        SoundManager.Instance.PlaySoundEffect("sniper1");
                    }
                    //
                    //
#else
                    Touch[] touches = Input.touches;
                    if (touches != null)
                    {
                        for (int i = 0; i < touches.Length; i++)
                        {
                            Vector2      touchPos = Camera.main.ScreenToWorldPoint(touches[i].position);
                            RaycastHit2D rayHit   = Physics2D.Raycast(touchPos, Vector2.zero, 0.1f, snipingLayerMask);
                            if (rayHit.collider != null)
                            {
                                CharacterInfo monster = rayHit.collider.gameObject.GetComponent <CharacterInfo>();
                                if (monster != null)
                                {
                                    if (monster.IsDead == false)
                                    {
                                        UseBullet();
                                        monster.GetDamage(snipingPower);

                                        //사운드
                                        SoundManager.Instance.PlaySoundEffect("sniper1");
                                        //이펙트 호출
                                        ExplosionEffect effect = ObjectManager.Instance.effectPool.GetItem();
                                        if (effect != null)
                                        {
                                            effect.Initilaize(rayHit.transform.position, "SniperAim", 0.5f, 2f);
                                            effect.SetAlpha(150f);
                                        }
                                        break;
                                    }
                                }
                            }
                        }
                    }
#endif
                }
            }

            yield return(null);
        }
    }