public void SendCheckPos() { if (++SendInterval < 60 * 6) { return; } SendInterval = 0; NetCmdCheckBulletPos pp = new NetCmdCheckBulletPos(); pp.SetCmdType(NetCmdType.CMD_CHECK_BULLET_POS); List <CheckBulletPos> pl = new List <CheckBulletPos>(); for (int i = 0; i < m_PlayerBullets.Length; ++i) { PlayerBullets pb = m_PlayerBullets[i]; foreach (Bullet bullet in pb.BulletList.Values) { CheckBulletPos bb = new CheckBulletPos(); bb.Pos = new NetCmdVector3(bullet.Position.x, bullet.Position.y, bullet.Position.z); bb.ID = bullet.ServerID; pl.Add(bb); } } pp.Count = (ushort)pl.Count; pp.Bullets = pl.ToArray(); SceneRuntime.Send <NetCmdCheckBulletPos>(pp); }
// 弾発射関数 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; } }
// デモ発射関数 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; } }
protected override void Initialize() { base.Initialize(); _player.InitializeDrawing(@"Plane\Player", 1f); _btns = new ControlButtons(this.Content, this.spriteBatch); _playerBullets = new PlayerBullets(this.Content, this.spriteBatch); enimies = new Enemies(this.Content, this.spriteBatch); }
public void PlayerLeave(byte seat) { PlayerBullets pb = m_PlayerBullets[seat]; foreach (Bullet bullet in pb.BulletList.Values) { bullet.Destroy(); } pb.BulletList.Clear(); }
public void LaunchBullet(ushort bulletID, byte launcherType, byte rateIndex, short angle, float time, byte reboundCount, ushort lockfishid /*, byte collidCount = 0, float pauseTime = 0, float speedScaling = 0*/) { byte clientSeat, id; SceneRuntime.BuuletIDToSeat(bulletID, out clientSeat, out id); Bullet bullet = new Bullet(); Vector3 startpos; Vector3 dir; float volume = 1; float curtime = Time.time; byte[] type = { 9, 9, 10, 11, 12 }; if (SceneRuntime.PlayerMgr.GetPlayer(clientSeat) == null) { return; } if (SceneRuntime.PlayerMgr.GetPlayer(clientSeat) == SceneRuntime.PlayerMgr.MySelf) { volume = 1; lastTime = curtime; GlobalAudioMgr.Instance.PlayOrdianryMusic((Audio.OrdianryMusic)type[launcherType], false, false, volume); } else { volume = 0.30f; if ((lastTime + 0.1f) < curtime) { GlobalAudioMgr.Instance.PlayOrdianryMusic((Audio.OrdianryMusic)type[launcherType], false, false, volume); } } SceneRuntime.GetBulletPosAndDir(clientSeat, angle, out dir, out startpos); SceneRuntime.PlayerMgr.ChangeLauncherAngle(dir, clientSeat); //改变炮台角度 bullet.Init(clientSeat, id, launcherType, rateIndex, startpos, dir, reboundCount, lockfishid); bullet.InitAngle(Utility.ShortToFlaot(angle)); //bullet.SetCollidData(collidCount, pauseTime, speedScaling); PlayerBullets pb = m_PlayerBullets[clientSeat]; if (pb != null) { Bullet findBullet; if (pb.BulletList.TryGetValue(id, out findBullet)) { Debug.Log("相同的子弹ID:" + id); findBullet.Destroy(); pb.BulletList.Remove(id); } if (time > 0) { bullet.Update(time); } pb.BulletList.Add(id, bullet); } }
public void ClearAllBullet() { for (int i = 0; i < m_PlayerBullets.Length; ++i) { PlayerBullets pb = m_PlayerBullets[i]; foreach (Bullet bullet in pb.BulletList.Values) { bullet.Destroy(); } pb.BulletList.Clear(); } }
public void RemoveBullet(byte clientSeat, byte id) { PlayerBullets pb = m_PlayerBullets[clientSeat]; Bullet bullet; if (pb.BulletList.TryGetValue(id, out bullet)) { InnerRemoveBullet(clientSeat, bullet); bullet.Destroy(); pb.BulletList.Remove(id); } }
public FireController(IDirected player, IUserFireInputProxy fireInput, BulletData data, IBulletFactory bulletFactory) { CanExecute = true; _player = player; _fireInput = fireInput; _playerTransform = player.GetPosition(); _data = data; _fireInput.FireOnEnable += FireInput; _currentCooldown = 0; _bulletFactory = bulletFactory; _playerBullets = new PlayerBullets(); _fire = false; }
// 衝突判定 protected void OnTriggerEnter2D(Collider2D collision) { if (collision.tag == "PlayerBullet" && this.hp > 0) { PlayerBullets pb = collision.GetComponent <PlayerBullets>(); if (pb != null) { Damage(pb.GetDamage()); GameObject eff = EffectManager.Instance.InstantiateEffect(EffectManager.Effects.Hit, collision.transform.position); eff.transform.localScale = new Vector2(0.5f, 0.5f); Destroy(collision.gameObject); } } }
// タイプ別ショット 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); } }
// uint m_BulletCount = 0; public void Init() { m_PlayerBullets = new PlayerBullets[ConstValue.PLAYER_MAX_NUM]; for (int i = 0; i < m_PlayerBullets.Length; ++i) { m_PlayerBullets[i] = new PlayerBullets(); } for (int j = 0; j < m_BulletObj.Length; ++j) { string str = string.Format("LauncherBullet{0}", j); m_BulletObj[j] = ResManager.Instance.LoadObject(str, "SceneRes/Prefab/Effect/Launcher/Bullet/", ResType.SceneRes); str = string.Format("LauncherPar{0}", j); m_BulletParObj[j] = ResManager.Instance.LoadObject(str, "SceneRes/Prefab/Effect/Launcher/Par/", ResType.SceneRes); } }
public void Update(float delta) { for (int i = 0; i < m_PlayerBullets.Length; ++i) { PlayerBullets pb = m_PlayerBullets[i]; List <Bullet> bullets = new List <Bullet>(pb.BulletList.Values); for (int j = 0; j < bullets.Count; ++j) { Bullet bullet = bullets[j]; if (!bullet.Update(delta)) { InnerRemoveBullet((byte)i, bullet); bullet.Destroy(); pb.BulletList.Remove(bullet.ID); } } } //SendCheckPos(); }
public CatchBulletData GetBullet(byte clientSeat, byte id) { PlayerBullets pb = m_PlayerBullets[clientSeat]; CatchBulletData cbd = new CatchBulletData(); if (pb.BulletList.TryGetValue(id, out cbd.BulletObj) == false) { DestroyBulletData dbd; if (pb.DestroyBulletList.TryGetValue(id, out dbd)) { cbd.LauncherType = dbd.LauncherType; cbd.RateIndex = dbd.RateIndex; } else { cbd.LauncherType = 255; LogMgr.Log("不存在的子弹, Seat:" + clientSeat + ", id:" + id); } } return(cbd); }
void Update() { //Commands movement if (Input.GetKey(KeyCode.D) && transform.position.x < maxWidth) { transform.Translate(Vector3.right * speed * Time.deltaTime); } if (Input.GetKey(KeyCode.Q) && transform.position.x > minWidth) { transform.Translate(-Vector3.right * speed * Time.deltaTime); } if (Input.GetKey(KeyCode.Z) && transform.position.y < maxHeight) { transform.Translate(Vector3.up * speed * Time.deltaTime); } if (Input.GetKey(KeyCode.S) && transform.position.y > minHeight) { transform.Translate(-Vector3.up * speed * Time.deltaTime); } //Return to the menu if (Input.GetKey(KeyCode.Escape)) { SceneManager.LoadScene(0); } //Pause if (Input.GetKeyDown(KeyCode.P)) { pauseGame(); } //Shooting bool shoot = Input.GetKey(KeyCode.Space); if (shoot) { PlayerBullets weapon = GetComponent <PlayerBullets>(); if (weapon != null) { weapon.Attack(false); } } //Death if (health <= 0) { SceneManager.LoadScene(1); ScoreScript.scoreValue = 0; } //Goal transition if (ScoreScript.scoreValue == ScoreGoal) { SceneManager.LoadScene(SceneNameToLoad); RoundScript.fieverValue += 0.5f; } void pauseGame() { if (isPaused) { Time.timeScale = 1; isPaused = false; } else { Time.timeScale = 0; isPaused = !isPaused; } } }
public bool HaveBullet(byte byseat) { PlayerBullets pb = m_PlayerBullets[byseat]; return(pb != null && pb.BulletList.Count != 0 || SceneRuntime.EffectMgr.HaveFlyGold(byseat)); }