private void SetDamage() { // Update current boss state state = BossStates.DAMAGE; // Reset time counter timeCounter = 0f; // Reset feedback time counter feedbackCounter = 0f; // Add spikes material to current damage target materials list damages.Add(spikeMat); // Remove all tank bosses references TankCombat tank = (TankCombat)playerChar.Combats[1] as TankCombat; for (int i = 0; i < tank.Bosses.Count; i++) { tank.Bosses.RemoveAt(i); } // Enable punch collider spikeHandColl.enabled = true; // Apply animator punch trigger animator.SetTrigger("Damage"); #if DEBUG_BUILD // Trace debug message Debug.Log("Boss: state set to DAMAGE"); #endif }
void OnTriggerEnter2D(Collider2D collider) { if (deathTimer == 0) { return; } bool destroyMe = false; TankCombat tc = collider.gameObject.GetComponent <TankCombat>(); if (tc != null) { int side = GetHitSide(startPos, collider.gameObject.transform.position, collider.gameObject.transform.right); tc.GotHitByMissile(side, damage, team); destroyMe = true; //Debug.Log ("Angle: " + angle + " AngleDir: " + angleDir + " side: " + side); } Exploder ex = collider.gameObject.GetComponent <Exploder>(); if (ex != null) { ex.Explode(); PlayGame.singleton.AddBarrelScore(); destroyMe = true; } // destroy missile if (destroyMe) { deathTimer = 0; NetworkServer.Destroy(this.gameObject); } }
private void SetSpikes() { // Update current boss state state = BossStates.SPIKES; // Reset time counter timeCounter = 0f; // Remove punch material from current damage target materials list damages.Remove(punchMat); // Disable punch collider punchColl.enabled = false; // Remove all tank bosses references TankCombat tank = (TankCombat)playerChar.Combats[1] as TankCombat; for (int i = 0; i < tank.Bosses.Count; i++) { tank.Bosses.RemoveAt(i); } // Apply animator punch trigger animator.SetTrigger("Spikes"); #if DEBUG_BUILD // Trace debug message Debug.Log("Boss: state set to SPIKES"); #endif }
void UpdateColor() { if (ClientScene.localPlayers.Count == 0) { return; } Color owningColor = Color.white; Color tryingColor = Color.white; var controller = ClientScene.localPlayers[0]; if (controller == null) { return; } if (controller.gameObject == null) { return; } var playerObj = controller.gameObject; TankCombat myTC = playerObj.GetComponent <TankCombat>(); if (owningTeam != -1) { if (myTC.team == owningTeam) { owningColor = Color.green; } else { owningColor = Color.red; } } GetComponent <SpriteRenderer>().material.color = owningColor; if (tryingTeam != -1) { if (myTC.team == tryingTeam) { tryingColor = Color.green; } else { tryingColor = Color.red; } } ParticleSystemRenderer psr = (ParticleSystemRenderer)(GetComponent <ParticleSystem>().GetComponent <ParticleSystemRenderer>()); psr.material.color = tryingColor; }
void OnTriggerExit2D(Collider2D collider) { TankCombat tc = collider.gameObject.GetComponent <TankCombat>(); if (tc != null) { targets.Remove(tc); if (targets.Count == 0) { GetComponent <ParticleSystem>().Stop(); } } }
void OnTriggerEnter2D(Collider2D collider) { TankCombat tc = collider.gameObject.GetComponent <TankCombat>(); if (tc != null) { targets.Add(tc); if (score < controlTime) { GetComponent <ParticleSystem>().Play(); } } }
public override void OnServerAddPlayer(NetworkConnection conn, short playerControllerId) { Vector3 pos = Vector3.zero; pos.y += (conn.connectionId % 8) * 2; pos.x += ((conn.connectionId / 4) * 4); GameObject thePlayer = (GameObject)Instantiate(base.playerPrefab, pos, Quaternion.identity); TankCombat tc = thePlayer.GetComponent <TankCombat>(); tc.InitializeFromTankType(TankTypeManager.Random()); NetworkServer.AddPlayerForConnection(conn, thePlayer, playerControllerId); }
private void SetEnemies() { // Update current boss state state = BossStates.ENEMIES; // Reset time counter timeCounter = 0f; // Remove spikes material from current damage target materials list damages.Add(spikeMat); // Disable punch collider spikeHandColl.enabled = false; // Remove all tank bosses references TankCombat tank = (TankCombat)playerChar.Combats[1] as TankCombat; for (int i = 0; i < tank.Bosses.Count; i++) { tank.Bosses.RemoveAt(i); } // Apply animator punch trigger animator.SetTrigger("Enemies"); // Reset line renderer vertex count lineRenderer.SetVertexCount(2); for (int i = 0; i < 2; i++) { lineRenderer.SetPosition(i, laserRoot.position); } // Enable spawn manager spawnManager.StartSpawner(); #if DEBUG_BUILD // Trace debug message Debug.Log("Boss: state set to ENEMIES"); #endif }
void Update() { if (Time.time > timer) { transform.localScale *= 0.9f; timer = Time.time + 0.1f; count += 1; if (count == 8) { GameObject.Destroy(gameObject); GameObject scorch = (GameObject)GameObject.Instantiate(scorchMark, transform.position, Quaternion.identity); GameObject.Destroy(scorch, 1); for (int i = 0; i < 3; i++) { Vector3 pos = transform.position; pos.x += UnityEngine.Random.Range(-10, 10) / 10.0f; pos.y += UnityEngine.Random.Range(-10, 10) / 10.0f; GameObject exp = (GameObject)GameObject.Instantiate(explosion, pos, Quaternion.identity); GameObject.Destroy(exp, 1); } if (NetworkServer.active) { Collider2D[] hits = Physics2D.OverlapCircleAll(transform.position, 2.0f); foreach (var hit in hits) { TankCombat hitTc = hit.GetComponent <TankCombat>(); if (hitTc != null) { int side = Missile.GetHitSide(transform.position, hit.transform.position, hit.transform.right); hitTc.GotHitByMissile(side, 50, team); } } } } } }
void Update() { if (Input.GetKeyDown(KeyCode.Escape)) { if (isServer) { NetworkManager.singleton.StopHost(); } else { NetworkManager.singleton.client.Disconnect(); Application.LoadLevel("title"); } } if (Input.GetKeyDown(KeyCode.H)) { // spawn heavy tank GameObject tank = (GameObject)Instantiate(NetworkManager.singleton.playerPrefab, Vector3.zero, Quaternion.identity); TankCombat tc = tank.GetComponent <TankCombat>(); tc.InitializeFromTankType(TankTypeManager.Random()); NetworkServer.Spawn(tank); } }
private void SetLaser() { // Update current boss state state = BossStates.LASER; // Reset time counter timeCounter = 0f; // Remove all tank bosses references TankCombat tank = (TankCombat)playerChar.Combats[1] as TankCombat; for (int i = 0; i < tank.Bosses.Count; i++) { tank.Bosses.RemoveAt(i); } // Apply animator punch trigger animator.SetTrigger("LaserStart"); #if DEBUG_BUILD // Trace debug message Debug.Log("Boss: state set to LASER"); #endif }
void OnGUI() { Vector3 pos = Camera.main.WorldToScreenPoint(transform.position); int myTeam = -1; if (NetworkClient.active && ClientScene.localPlayers.Count > 0 && ClientScene.localPlayers[0].gameObject != null) { TankCombat localPlayerTc = ClientScene.localPlayers[0].gameObject.GetComponent <TankCombat>(); myTeam = localPlayerTc.team; } // your team is green, other teams are red Color teamColor = Color.white; if (myTeam == tc.team) { teamColor = Color.green; } else { teamColor = Color.red; } // draw the name with a shadow (colored for buf) GUI.color = Color.black; GUI.Label(new Rect(pos.x - 50, Screen.height - pos.y - 62, 150, 30), tc.tankName); GUI.color = teamColor; GUI.Label(new Rect(pos.x - 51, Screen.height - pos.y - 61, 150, 30), tc.tankName); if (tc.alive && tc.tt != null) { DrawBar(teamColor, pos, 40, tc.health, tc.tt.maxHealth); DrawBar(Color.yellow, pos, 34, tc.heat, tc.tt.maxHeat); } else { GUI.color = Color.black; GUI.Label(new Rect(pos.x - 40, Screen.height - pos.y - 42, 150, 30), "YOU ARE DEAD"); GUI.color = Color.white; GUI.Label(new Rect(pos.x - 41, Screen.height - pos.y - 41, 150, 30), "YOU ARE DEAD"); } if (!isLocalPlayer) { return; } // draw direction damage indicators DrawArmour(new Rect(20, 100, 64, 32), front, tc.armorFront); DrawArmour(new Rect(20, 210, 64, 32), back, tc.armorBack); DrawArmour(new Rect(20, 136, 24, 72), left, tc.armorLeft); DrawArmour(new Rect(60, 136, 24, 72), right, tc.armorRight); if (damageTimer > Time.time) { Rect r = new Rect(0, 0, 0, 0); if (damageSide == 0) { r = new Rect(40, 80, 40, 40); } else if (damageSide == 1) { r = new Rect(100, 160, 40, 40); } else if (damageSide == 2) { r = new Rect(40, 260, 40, 40); } else if (damageSide == 3) { r = new Rect(2, 160, 40, 40); } GUI.color = Color.red; GUI.Label(r, "[" + damageAmount + "]"); } GUI.color = Color.white; GUI.Label(new Rect(5, 5, 180, 60), "Arrows to move, mouse buttons to fire. Escape to exit. Destroy three barrels."); GUI.Label(new Rect(10, 250, 200, 20), "Turret Ammo: " + tc.ammunitionTurret + "/" + tc.tt.maxAmmunitionTurret); GUI.Label(new Rect(10, 270, 200, 20), "Flame Ammo: " + tc.ammunitionMG + "/" + tc.tt.maxAmmunitionMG); GUI.Label(new Rect(200, 10, 200, 20), "Barrels: " + PlayGame.GetBarrelScore()); if (myTeam == 0) { GUI.color = Color.green; } else { GUI.color = Color.red; } GUI.Label(new Rect(200, 30, 200, 20), "Control(0): " + PlayGame.GetControlScore(0)); if (myTeam == 1) { GUI.color = Color.green; } else { GUI.color = Color.red; } GUI.Label(new Rect(200, 50, 200, 20), "Control(1): " + PlayGame.GetControlScore(1)); GUI.color = Color.white; if (NetworkClient.active) { GUI.Label(new Rect(5, 5, 180, 60), "RTT: " + NetworkClient.allClients[0].GetRTT()); } GUI.color = Color.white; if (PlayGame.GetComplete()) { GUI.Label(new Rect(Screen.width / 2 - 60, Screen.height / 2 - 100, 200, 40), "--- Level Complete ---\nPRESS SPACE TO RESTART"); } }