/* * public void FireFlare(Vector3 aPosition, Vector3 aVelocity) * { * float flareDelay = BrainCloudStats.Instance.m_flareCooldown; * if ((Time.time - m_lastFlare) > flareDelay) * { * m_lastFlare = Time.time; * GetComponent<BombersPlayerController>().FireFlareCommand(aPosition, aVelocity); * } * } */ public GameObject SpawnBomb(BombInfo aBombInfo) { m_bombs--; GameObject player = null; PlaneController playerPlaneController = null; PlaneController tempPlaneController = null; foreach (LobbyMemberInfo member in BombersNetworkManager.LobbyInfo.Members) { tempPlaneController = member.PlayerController.m_playerPlane; if (tempPlaneController.NetId == aBombInfo.m_shooter) { player = member.PlayerController.gameObject; playerPlaneController = tempPlaneController; break; } } if (playerPlaneController != null) { GameObject flare = (GameObject)Instantiate(m_bombDropPrefab, player.transform.position, playerPlaneController.m_bulletSpawnPoint.rotation); flare.transform.parent = player.transform; if (aBombInfo.m_shooter == GetComponent <BombersPlayerController>().NetId) { flare.GetComponent <AudioSource>().spatialBlend = 0; } flare.GetComponent <AudioSource>().Play(); } GameObject bomb = (GameObject)Instantiate((BombersPlayerController.GetPlayer(aBombInfo.m_shooter).m_team == 1) ? m_bombPrefab1 : m_bombPrefab2, aBombInfo.m_startPosition, Quaternion.LookRotation(aBombInfo.m_startDirection, -Vector3.forward)); bomb.GetComponent <Rigidbody>().velocity = aBombInfo.m_startVelocity; bomb.GetComponent <BombController>().BombInfo = aBombInfo; return(bomb); }
void OnCollisionEnter(Collision aCollision) { m_isActive = false; if (IsServer) { if (aCollision.gameObject.layer == 4) { BombersNetworkManager.LocalPlayer.DeleteBombCommand(this, 0); } else if (aCollision.gameObject.layer == 20) //it hit a rock { BombersNetworkManager.LocalPlayer.DeleteBombCommand(this, 1); } else //it hit a ship { BombersPlayerController shooterController = BombersPlayerController.GetPlayer(BombInfo.m_shooter); if ((shooterController.m_team == 1 && aCollision.gameObject.layer == 16) || (shooterController.m_team == 2 && aCollision.gameObject.layer == 17)) { BombersNetworkManager.LocalPlayer.DeleteBombCommand(this, 2); } else { ShipController controller = aCollision.transform.parent.parent.parent.gameObject.GetComponent <ShipController>(); List <ShipTarget> shipTargets = controller.GetTargets(); for (int i = 0; i < shipTargets.Count; i++) { if ((transform.position - shipTargets[i].m_position.position).magnitude <= m_bombRadius + shipTargets[i].m_radius) { if (!shipTargets[i].m_isAlive) { continue; } else { shipTargets[i].m_isAlive = false; BombersNetworkManager.LocalPlayer.HitShipTargetPointCommand(shipTargets[i].m_shipID, shipTargets[i].m_index, m_bombInfo.GetJson()); } if (!aCollision.transform.parent.parent.parent.gameObject.GetComponent <ShipController>().IsAlive()) { BombersNetworkManager.LocalPlayer.DestroyShipCommand(controller.m_shipID, m_bombInfo.GetJson()); break; } } } BombersNetworkManager.LocalPlayer.DeleteBombCommand(this, 1); } } } }
void Start() { m_lastPositions = new PlaneVector[1]; m_planeDamage = new List <GameObject>() { null, null, null, null }; Debug.Log(m_playerID); transform.FindChild("NameTag").gameObject.GetComponent <TextMesh>().text = BombersPlayerController.GetPlayer(m_playerID).m_displayName; if (BombersPlayerController.GetPlayer(m_playerID).isLocalPlayer) //isLocal { transform.FindChild("NameTag").gameObject.GetComponent <TextMesh>().text = ""; } m_planeBank = transform.FindChild("PlaneBank"); for (int i = 0; i < m_lastPositions.Length; i++) { m_lastPositions[i] = new PlaneVector(transform.position, transform.up); } string teamBomberPath = ""; if (BombersPlayerController.GetPlayer(m_playerID).m_team == 1) { teamBomberPath = "Bomber01"; gameObject.layer = 8; transform.FindChild("NameTag").gameObject.GetComponent <TextMesh>().color = Color.green; } else { teamBomberPath = "Bomber02"; gameObject.layer = 9; transform.FindChild("NameTag").gameObject.GetComponent <TextMesh>().color = Color.red; } Transform graphicPivot = transform.FindChild("PlaneBank").FindChild("PlaneGraphic"); GameObject graphic = (GameObject)Instantiate((GameObject)Resources.Load(teamBomberPath), graphicPivot.position, graphicPivot.rotation); graphic.transform.parent = graphicPivot; graphic.transform.localPosition = Vector3.zero; graphic.transform.localRotation = Quaternion.identity; m_bulletSpawnPoint = graphic.transform.FindChild("BulletSpawn"); m_leftContrail = graphic.transform.FindChild("LeftSmokeTrail").GetComponent <ParticleSystem>(); m_rightContrail = graphic.transform.FindChild("RightSmokeTrail").GetComponent <ParticleSystem>(); m_gunCharge = transform.GetChild(0).GetChild(0).FindChild("GunCharge").gameObject; m_gunCharge.GetComponent <Animator>().speed = 1 / GameObject.Find("BrainCloudStats").GetComponent <BrainCloudStats>().m_multiShotDelay; }
void OnCollisionEnter(Collision aCollision) { m_isActive = false; if (isServer) { if (aCollision.gameObject.layer == 4) { BombersNetworkManager.m_localPlayer.DeleteBombCommand(this, 0); } else if (aCollision.gameObject.layer == 20) //it hit a rock { BombersNetworkManager.m_localPlayer.DeleteBombCommand(this, 1); } else //it hit a ship { if ((BombersPlayerController.GetPlayer(m_bombInfo.m_shooter).m_team == 1 && aCollision.gameObject.layer == 16) || (BombersPlayerController.GetPlayer(m_bombInfo.m_shooter).m_team == 2 && aCollision.gameObject.layer == 17)) { BombersNetworkManager.m_localPlayer.DeleteBombCommand(this, 2); } else { List <ShipController.ShipTarget> shipTargets = aCollision.transform.parent.parent.parent.gameObject.GetComponent <ShipController>().GetTargets(); for (int i = 0; i < shipTargets.Count; i++) { if ((transform.position - shipTargets[i].m_position.position).magnitude <= m_bombRadius + shipTargets[i].m_radius) { if (!shipTargets[i].m_isAlive) { continue; } else { shipTargets[i].m_isAlive = false; BombersNetworkManager.m_localPlayer.HitShipTargetPointCommand(shipTargets[i].m_shipID, shipTargets[i].m_index, m_bombInfo.GetJson()); } if (!aCollision.transform.parent.parent.parent.gameObject.GetComponent <ShipController>().IsAlive()) { BombersNetworkManager.m_localPlayer.DestroyShipCommand(aCollision.transform.parent.parent.parent.gameObject.GetComponent <ShipController>().m_shipID, m_bombInfo.GetJson()); break; } } } BombersNetworkManager.m_localPlayer.DeleteBombCommand(this, 1); } } NetworkServer.Destroy(gameObject); } else { if (transform.GetChild(0).GetChild(0).GetComponent <MeshRenderer>().enabled == true) { try { if (aCollision.gameObject.layer == 4) { Instantiate((GameObject)Resources.Load("BombWaterExplosion"), transform.position, Quaternion.identity); } else if ((BombersPlayerController.GetPlayer(m_bombInfo.m_shooter).m_team == 1 && aCollision.gameObject.layer == 16) || (BombersPlayerController.GetPlayer(m_bombInfo.m_shooter).m_team == 2 && aCollision.gameObject.layer == 17)) { Instantiate((GameObject)Resources.Load("BombDud"), transform.position, Quaternion.identity); } else { Instantiate((GameObject)Resources.Load("BombExplosion"), transform.position, Quaternion.identity); } transform.GetChild(0).GetChild(0).GetComponent <MeshRenderer>().enabled = false; Destroy(gameObject); } catch { Instantiate((GameObject)Resources.Load("BombExplosion"), transform.position, Quaternion.identity); transform.GetChild(0).GetChild(0).GetComponent <MeshRenderer>().enabled = false; Destroy(gameObject); } } } }
override protected void Start() { m_velocityMaxMagnitude = GConfigManager.GetFloatValue("MaxAcceleration"); _classType = BombersNetworkManager.PLANE_CONTROLLER; m_lastPositions = new PlaneVector[1]; m_planeDamage = new List <GameObject>() { null, null, null, null }; TextMesh textMesh = transform.FindDeepChild("NameTag").gameObject.GetComponent <TextMesh>(); PlayerController = BombersPlayerController.GetPlayer(PlayerId); // setup the member info if (PlayerController.MemberInfo == null) { PlayerController.MemberInfo = BombersNetworkManager.LobbyInfo.GetMemberWithProfileId(PlayerController.ProfileId); } textMesh.text = PlayerController.m_displayName; if (PlayerController.IsLocalPlayer) { textMesh.text = ""; } m_planeBank = transform.FindDeepChild("PlaneBank"); for (int i = 0; i < m_lastPositions.Length; i++) { m_lastPositions[i] = new PlaneVector(transform.position, transform.up); } string teamBomberPath = ""; bool bHasGoldWings = false; if (PlayerController.MemberInfo.ExtraData.ContainsKey(GBomberRTTConfigManager.JSON_GOLD_WINGS)) { bHasGoldWings = (bool)PlayerController.MemberInfo.ExtraData[GBomberRTTConfigManager.JSON_GOLD_WINGS]; } if (PlayerController.m_team == 1) { teamBomberPath = bHasGoldWings ? "Bomber01Golden" : "Bomber01"; gameObject.layer = 8; textMesh.color = Color.green; } else { teamBomberPath = bHasGoldWings ? "Bomber02Golden" : "Bomber02"; gameObject.layer = 9; textMesh.color = Color.red; } SmartsComponent = PlayerController.transform.FindDeepChild("smartsComponent").gameObject; SmartsComponent.SetActive(true); SmartsComponent.layer = PlayerController.m_team == 1 ? 21 : 22; // debug collisions Transform graphicPivot = transform.FindDeepChild("PlaneGraphic"); GameObject graphic = (GameObject)Instantiate((GameObject)Resources.Load("Prefabs/Game/" + teamBomberPath), graphicPivot.position, graphicPivot.rotation); graphic.transform.parent = graphicPivot; graphic.transform.localPosition = Vector3.zero; graphic.transform.localRotation = Quaternion.identity; m_bulletSpawnPoint = graphic.transform.FindDeepChild("BulletSpawn"); m_leftContrail = graphic.transform.FindDeepChild("LeftSmokeTrail").GetComponent <ParticleSystem>(); m_rightContrail = graphic.transform.FindDeepChild("RightSmokeTrail").GetComponent <ParticleSystem>(); m_gunCharge = transform.FindDeepChild("GunCharge").gameObject; m_gunCharge.GetComponent <Animator>().speed = 1 / GConfigManager.GetFloatValue("MultishotDelay"); if (!PlayerController.IsLocalPlayer) { m_gunCharge.transform.Find("ChargeReady").transform.GetComponent <AudioSource>().enabled = false; } transform.localPosition = Vector3.zero; m_rigidBody = GetComponent <Rigidbody>(); _syncTransformInformation = true; // no delay by default m_syncTransformationDelay = 0.0f; transform.position = PlayerController.transform.position; if (IsServer) { SendStart(_classType, PlayerId, _fileName, transform); } base.Start(); }