Example #1
0
 // Use this for initialization
 void Start()
 {
     Actor         = GetComponent <ActorBehavior>();
     PVel          = GetComponent <Rigidbody2D>();
     Actorbehavior = GetComponent <ActorBehavior>();
     Multi         = GetComponent <StatusMultiple>();
     SceneManager.activeSceneChanged += ActiveSceneLD;
 }
Example #2
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.gameObject.tag == "Player")
        {
            StatusMultiple StatusMultiple = collision.gameObject.GetComponent <StatusMultiple>();
            PlayerStatus   Status         = collision.gameObject.GetComponent <PlayerStatus>();
            ActorBehavior  Actor          = collision.gameObject.GetComponent <ActorBehavior>();
            AudioSource    Audio          = gameObject.AddComponent <AudioSource>();
            if (ChangeGuns != null && ChangeGuns.GetComponent <ShooterBehavior>())
            {
                Status.Guns = ChangeGuns;
            }
            if (GetSound != null)
            {
                Audio.PlayOneShot(GetSound);
            }
            gameObject.GetComponent <Renderer>().enabled = false;

            Actor.Life               += AddLife;
            Actor.MaxLife            += AddMaxlife;
            StatusMultiple.MulSpeed  += AddMulSpeed;
            StatusMultiple.MulDamage += AddMulDamage;

            GameObject        Script     = new GameObject("ItemScript") as GameObject;
            ItemScriptAppears itemScript = Script.AddComponent <ItemScriptAppears>();
            itemScript.text = GetScript;
            itemScript.font = Scriptfont;

            if (Actor.Energy < Actor.MaxEnergy * 2)
            {
                if (Actor.Energy >= Actor.MaxEnergy)
                {
                    Actor.Energy    += AddEnergy / 5;
                    Actor.MaxEnergy += AddEnergy / 50;
                }
                if (Actor.Energy < Actor.MaxEnergy)
                {
                    Actor.Energy += AddEnergy;
                }
            }

            Destroy(gameObject, GetSound.length);
        }
    }
Example #3
0
    // Use this for initialization
    IEnumerator Start()
    {
        bool reloadSoundToggle = true;

        if (GameObject.Find("WorldSetting"))
        {
            Cursor.SetCursor(GameObject.Find("WorldSetting").GetComponent <Level>().Cursors,
                             new Vector2(16f, 16f), cursorMode: 0);
        }

        statMul = GetComponentInParent <StatusMultiple>();
        TotalMagcap
            = ammo.MagCap
              + statMul.AddMagazine;

        Audio = GetComponent <AudioSource>();
        Actor = transform.root.GetComponent <ActorBehavior>();
        bool isLaser = ammo.Shot.GetComponent <BulletStatus>().Lazer;

        while (true)
        {
            if (Reloading)
            {
                if (sound.Reload_Start != null && Audio.clip != sound.Reload_Start)
                {
                    Audio.clip = sound.Reload_Start;
                    Audio.Play();
                }
                yield return(new WaitForSeconds(stat_Time.Reload));

                if (sound.Reload_End != null && Audio.clip != sound.Reload_End)
                {
                    Audio.clip = sound.Reload_End;
                    Audio.Play();
                }

                if (Actor.Energy < ammo.UseEnergyByAmmo * (TotalMagcap / (1 + stat_Number.Repeat)) &&
                    ammo.UseEnergyByAmmo > 0)
                {
                    // もしアクターのエネルギーが満タンに出来ない時
                    ammo.RestBullet = Mathf.CeilToInt(Actor.Energy / (ammo.UseEnergyByAmmo * (TotalMagcap / (1 + stat_Number.Repeat))) * TotalMagcap);
                }
                else
                {
                    ammo.RestBullet = TotalMagcap;
                }

                Reloading = false;
                yield return(null);
            }

            Chargetime = ShootReadyupTime(Chargetime);

            if (Chargetime > 0)
            {
                Debug.Log("Chargetime :" + Chargetime);
            }
            if (stat_Time.WarmUp > 0)
            {
                if (Chargetime == 0.1f && sound.warmUp != null)
                {
                    Audio.clip = sound.warmUp;
                    Audio.Play();
                }
            }

            //発射レディ
            if ((ammo.RestBullet > 0 && Reloading == false) &&
                ((stat_Time.WarmUp > 0 && Chargetime > stat_Time.WarmUp && (
                      (Chargetime > 0 && ammo.isGunAuto) ||
                      (Chargetime == -1 && !ammo.isGunAuto))
                  ) ||
                 (stat_Time.WarmUp <= 0 && (
                      (Chargetime > 0 && ammo.isGunAuto) ||
                      (Chargetime == 0.1f && !ammo.isGunAuto))
                 ))
                )
            {
                NextShotReady = false;
                if (isLaser && LazCaster == null)//レーザ用に発射口を出す
                {
                    LazCaster = new GameObject("LazCaster");
                    LazCaster.transform.SetParent(transform, false);
                }

                for (int j = 0; j < stat_Number.Repeat + 1; j++)//バースト射撃
                {
                    Actor.Energy -= ammo.UseEnergyByAmmo / stat_Number.Repeat;
                    for (int i = 0; i < stat_Number.Burst + statMul.AddBurst + 1; i++)//追加発射数
                    {
                        Debug.Log("Shot");
                        //Ray Mode:
                        if (isLaser)
                        {
                            shotrotate = (shotD8pos + ammo.Shot.GetComponent <BulletStatus>().bulletunder / 2);
                            bullet     = Instantiate(ammo.Shot,
                                                     shotrotate,
                                                     Quaternion.Euler(0, 0, (GunRotate + Random.Range
                                                                                 (-stat_Number.Accuracy - (stat_Number.RecoilFreq * Chargetime), stat_Number.Accuracy) + (stat_Number.RecoilFreq * Chargetime)))
                                                     ) as GameObject;
                            if (LazCaster && bullet)
                            {
                                bullet.transform.SetParent(LazCaster.transform, false);
                            }
                            Debug.Log("!");
                        }
                        //Bullet Mode:
                        else
                        {
                            shotrotate = this.transform.position + Quaternion.Euler(0, 0, GunRotate) *
                                         (shotD8pos + ammo.Shot.GetComponent <BulletStatus>().bulletunder / 2);
                            bullet = Instantiate(ammo.Shot, shotrotate,
                                                 Quaternion.Euler(0, 0, (GunRotate + Random.Range
                                                                             (-stat_Number.Accuracy - (stat_Number.RecoilFreq * Chargetime), stat_Number.Accuracy) + (stat_Number.RecoilFreq * Chargetime)))
                                                 ) as GameObject;
                            Debug.Log("!");
                        }
                    }
                    Instantiate(ammo.splash, this.transform.position + Quaternion.Euler(0, 0, GunRotate) * shotD8pos, Quaternion.Euler(0, 0, GunRotate), parent: transform);
                    //発射時マズルフラッシュを出す
                    if (sound.Shot != null)
                    {
                        Audio.clip = sound.Shot;
                        Audio.Play();//ショットサウンド…
                    }
                    --ammo.RestBullet; if (ammo.RestBullet <= 0)
                    {
                        break;
                    }
                    yield return(new WaitForSeconds(stat_Time.Cooling));
                }
                yield return(new WaitForSeconds(stat_Time.Wait));
            }
            else
            {
                NextShotReady = true;
            }
            yield return(null);

            if ((Actor.Energy >= ammo.UseEnergyByAmmo) &&
                (ammo.RestBullet <= 0 && Chargetime == 0.1f) ||
                (Reload_Pressed() && ammo.RestBullet < TotalMagcap)
                )
            {
                Reloading = true;
            }

            yield return(null);
        }
    }