// デモ発射関数 public void ShotBullets_Demo(bool prim) { if (shotCT <= 0) { // 共通ショット Vector3[] shotPos = new Vector3[2]; shotPos[0] = this.transform.position + new Vector3(0.4f, 0, 0); shotPos[1] = this.transform.position + new Vector3(-0.4f, 0, 0); for (int i = 0; i < 2; i++) { GameObject bullet = Instantiate(bulletObj, shotPos[i], Quaternion.identity); PlayerBullets pb = bullet.GetComponent <PlayerBullets>(); pb.SetSpeed(param.defaultShot_speed); } if (prim) { TypeShot(shotType_Primary, !prim); } else { TypeShot(shotType_Secondary, !prim); } shotCT = param.shotInterval; } else { shotCT -= Time.deltaTime; } }
// 弾発射関数 void ShotBullets() { if (shotCT <= 0) { if (ControllSetting.GetKey("Shot")) { audio.PlayOneShot(AudioManager.Instance.se_shot); // 共通ショット Vector3[] shotPos = new Vector3[2]; shotPos[0] = this.transform.position + new Vector3(0.4f, 0, 0); shotPos[1] = this.transform.position + new Vector3(-0.4f, 0, 0); for (int i = 0; i < 2; i++) { GameObject bullet = Instantiate(bulletObj, shotPos[i], Quaternion.identity); PlayerBullets pb = bullet.GetComponent <PlayerBullets>(); pb.SetSpeed(param.defaultShot_speed); } if (!slowMove) { TypeShot(shotType_Primary, slowMove); } else { TypeShot(shotType_Secondary, slowMove); } shotCT = param.shotInterval; } } else { shotCT -= Time.deltaTime; } }
// タイプ別ショット private void TypeShot(ShotType type, bool slow) { switch (type) { case ShotType.FourWay: if (!slow) { NWayShot(4, 0.0f, param.fourWay_betweenAngle, param.fourWay_speed); } else { NWayShot(4, 0.0f, param.fourWay_betweenAngle_slow, param.fourWay_speed); } break; case ShotType.Homing: for (int i = 0; i < 4; i++) { if (!slow) { Instantiate(homingObj, this.transform.position, Quaternion.Euler(0.0f, 0.0f, (i - 2) * 30.0f - 180.0f + 15.0f)); } else { Instantiate(homingObj, this.transform.position, Quaternion.Euler(0.0f, 0.0f, (i - 2) * 20.0f - 180.0f + 10.0f)); } } break; case ShotType.Spread: for (int i = 0; i < 4; i++) { float a; if (!slow) { a = param.spread_betweenAngle; } else { a = param.spread_betweenAngle_slow; } float zAngle = (i - 2) * a + (a / 2.0f) + Random.Range(-(a / 2.0f), (a / 2.0f)); GameObject bullet = Instantiate(bulletObj_s, this.transform.position, Quaternion.Euler(0.0f, 0.0f, zAngle)); PlayerBullets pb = bullet.GetComponent <PlayerBullets>(); pb.SetSpeed(Random.Range(param.spread_minSpeed, param.spread_maxSpeed)); } break; } }
// N Way ショット private void NWayShot(int num, float baseAngle, float betweenAngle, float speed) { for (int i = 0; i < num; i++) { float zAngle = (i * betweenAngle) + baseAngle - ((num / 2) * betweenAngle); if (num % 2 == 0) { zAngle += betweenAngle / 2.0f; } Quaternion quat = Quaternion.Euler(0.0f, 0.0f, zAngle); GameObject bullet = Instantiate(bulletObj, this.transform.position, quat); PlayerBullets pb = bullet.GetComponent <PlayerBullets>(); pb.SetSpeed(speed); } }