コード例 #1
0
    void Update()
    {
        if (laser.typeAttack == Laser.TypeAttack.Hold)
        {
            if (!PlayerController.Instance.CanShoot)
            {
                laserOn = false;
            }
        }
        if (laserOn)
        {
            Vector2 laserDir = transform.right;

            BuildChain();
            RaycastHit2D[] hit = Physics2D.RaycastAll(rayBeginPos.position, laserDir, 300, enemyHitLayer);

            if (meltParticle == null)
            {
                meltParticle = Instantiate(laserMelEmitter, rayBeginPos.position, Quaternion.identity) as GameObject;
                meltParticle.transform.parent = this.transform;
            }
            if (laser.typeAttack == Laser.TypeAttack.Click)
            {
                time -= Time.deltaTime;
                if (time < 0)
                {
                    laserOn = false;
                    time    = 0.5f;
                }
            }

            for (int i = 0; i < hit.Length; i++)
            {
                for (int j = 0; j < hit.Length; j++)
                {
                    if (i == 0)
                    {
                        if (hit[i].collider != null)
                        {
                            if (hit[i].collider.tag == "Wall")
                            {
                                LightningBolts.DrawLightning(rayBeginPos.transform.position, hit[i]);
                            }
                            else if (hit[i].collider.tag == "Enemy")
                            {
                                if (hit[j].collider.tag == "Wall")
                                {
                                    LightningBolts.DrawLightning(rayBeginPos.transform.position, hit[j]);
                                    if (hit[j - 1].collider.tag == "Wall")
                                    {
                                        LightningBolts.DrawLightning(rayBeginPos.transform.position, hit[j - 1]);
                                    }
                                }
                                else if (hit[j].collider.tag == "Enemy")
                                {
                                    if (hitParticle[j] == null)
                                    {
                                        hitParticle[j] = Instantiate(laserHitEmitter, transform.position, Quaternion.identity);
                                    }

                                    if (hitParticle[j] != null)
                                    {
                                        hitParticle[j].transform.position = hit[j].point;
                                    }
                                    if (Time.time > lastShot + WeaponManager.Instance.current_Weapon.defaultConfig.fireRate)
                                    {
                                        if (laser.typeAttack == Laser.TypeAttack.Click)
                                        {
                                            if (hit[j].collider.gameObject.GetComponent <EnemyController>())
                                            {
                                                hit[j].collider.gameObject.GetComponent <EnemyController>().DealDamage(WeaponManager.Instance.current_Weapon.defaultConfig.damage);
                                            }
                                            else if (hit[j].collider.gameObject.GetComponent <BossController>())
                                            {
                                                hit[j].collider.gameObject.GetComponent <BossController>().BossTakeDamage(WeaponManager.Instance.current_Weapon.defaultConfig.damage);
                                            }
                                        }

                                        lastShot = Time.time;
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        else
        {
            for (int i = 0; i < hitParticle.Length; i++)
            {
                if (hitParticle[i] != null)
                {
                    Destroy(hitParticle[i]);
                }
            }

            if (meltParticle != null)
            {
                Destroy(meltParticle);
            }

            LightningBolts.Deactivate();
        }
    }