void AttemptPlayerEquipment() { if (!playercanmove) { return; } if (Input.GetKey(KeyCode.L) && (attacking == false) && (firing == false)) { if (equipment == null) { Debug.Log("Can't use equipment yet, none have been found!"); return; } else { if ((equipment.GetComponent <Staff>().Name.Equals("Shield")) && (timeBtwShield <= 0)) { //startTimeBtwEquipment = 10.0f;\ timeBtwShield = startTimeBtwShield; animator.SetTrigger("Shielding"); playerAudio.clip = shieldClip; playerAudio.Play(); blocking = true; } else if ((equipment.GetComponent <Staff>().Name.Equals("Time Stop Watch")) && (timeBtwStopwatch <= 0) && (!time_stopped)) { //startTimeBtwEquipment = 5.0f; Debug.Log("Stop time!"); //timeBtwStopwatch = startTimeBtwStopwatch; time_stop_counter = start_time_stop_counter; stop_time_count.value = time_stop_counter; playerAudio.clip = timeStopWatchClip; stop_time_count.gameObject.SetActive(true); time_stopped = true; //gameObject.GetComponent<Time_Stop_Effect>; playerAudio.Play(); // 1. Freeze enemies, 2. add blue tint to screen (perhaps copy damageImage from PlayerHealth?) } else if ((equipment.GetComponent <Staff>().Name.Equals("Nuka Soda")) && (timeBtwSoda <= 0) && (sodaCooldown <= 0)) { //startTimeBtwEquipment = 15.0f; Debug.Log("Buff player!"); sodaBuff = true; animator.speed = 2; timeBtwSoda = startTimeBtwSoda; playerAudio.clip = nukaSodaClip; playerAudio.Play(); // 1. Increase player movement speed, 2. Increase melee attack speed [3. Decrease cooldowns?] } } //timeBtwEquipment = startTimeBtwEquipment; } }
void AttemptPlayerProjectile() { if (!playercanmove) { return; } if ((Input.GetKey(KeyCode.K)) && (attacking == false)) { if (rangedWeapon == null) { Debug.Log("Can't use any ranged weapons yet, none have been found!"); return; } else { if ((rangedWeapon.GetComponent <Staff>().Name.Equals("Staff")) && (timeBtwFireball <= 0)) { animator.SetTrigger("CastingFireball"); playerAudio.clip = fireballClip; playerAudio.Play(); timeBtwFireball = startTimeBtwFireball; if (time_stopped) { time_stop_counter -= 200; } // Rotate bullet sprite to go with player direction Quaternion fixedDirection = Quaternion.identity; fixedDirection.eulerAngles = new Vector3(0, 0, 180 - (direction * 180)); // Multiply by 180 to convert to degrees. Debug.Log("direction = " + direction); Vector2 projectilePosition = transform.position; float projectileAngle = Mathf.Round(direction * 2) / 2; // Round to nearest 0.5 if (projectileAngle == -0.5f) // if facing left { projectilePosition.x -= 0.15f; // offset from player pivot (to avoid shooting from chest) projectilePosition.y += 0.15f; // offset from player feet pivot GameObject go = (GameObject)Instantiate(bullet, projectilePosition, fixedDirection); go.GetComponent <Rigidbody2D>().velocity = Vector2.left; } else if (projectileAngle == 0) // if facing up { projectilePosition.y += 0.25f; GameObject go = (GameObject)Instantiate(bullet, projectilePosition, fixedDirection); go.GetComponent <Rigidbody2D>().velocity = Vector2.up; } else if (projectileAngle == 0.5f) // if facing right { projectilePosition.x += 0.15f; projectilePosition.y += 0.15f; GameObject go = (GameObject)Instantiate(bullet, projectilePosition, fixedDirection); go.GetComponent <Rigidbody2D>().velocity = Vector2.right; } else if ((projectileAngle == 1) || (projectileAngle == -1)) // if facing down { GameObject go = (GameObject)Instantiate(bullet, projectilePosition, fixedDirection); go.GetComponent <Rigidbody2D>().velocity = Vector2.down; } } else if ((rangedWeapon.GetComponent <Staff>().Name.Equals("Shotgun")) && (timeBtwShotgun <= 0)) { animator.SetTrigger("ShotgunShot"); playerAudio.clip = shotgunClip; playerAudio.Play(); timeBtwShotgun = startTimeBtwShotgun; if (time_stopped) { time_stop_counter -= 200; } for (int i = 0; i < 3; i++) { // Spawns bullet GameObject tempBullet = null; // Randomize angle variation between bullets float spreadAngle = Random.Range(-25, 25); float rotateAngle = 0; // Rotate bullet sprite to go with player direction Quaternion fixedDirection = Quaternion.identity; fixedDirection.eulerAngles = new Vector3(0, 0, 180 - (direction * 180)); // Multiply by 180 to convert to degrees. Vector2 projectilePosition = transform.position; float projectileAngle = Mathf.Round(direction * 2) / 2; // Round to nearest 0.5 if (projectileAngle == -0.5f) // if facing left { projectilePosition.x -= 0.15f; // offset from player pivot (to avoid shooting from chest) projectilePosition.y += 0.15f; // offset from player feet pivot tempBullet = (GameObject)Instantiate(shotgunPellet, projectilePosition, fixedDirection); rotateAngle = spreadAngle + (Mathf.Atan2(Vector2.left.y, Vector2.left.x) * Mathf.Rad2Deg); } else if (projectileAngle == 0) // if facing up { projectilePosition.y += 0.25f; tempBullet = (GameObject)Instantiate(shotgunPellet, projectilePosition, fixedDirection); rotateAngle = spreadAngle + (Mathf.Atan2(Vector2.up.y, Vector2.up.x) * Mathf.Rad2Deg); } else if (projectileAngle == 0.5f) // if facing right { projectilePosition.x += 0.15f; projectilePosition.y += 0.15f; tempBullet = (GameObject)Instantiate(shotgunPellet, projectilePosition, fixedDirection); rotateAngle = spreadAngle + (Mathf.Atan2(Vector2.right.y, Vector2.right.x) * Mathf.Rad2Deg); } else if ((projectileAngle == 1) || (projectileAngle == -1)) // if facing down { tempBullet = (GameObject)Instantiate(shotgunPellet, projectilePosition, fixedDirection); rotateAngle = spreadAngle + (Mathf.Atan2(Vector2.down.y, Vector2.down.x) * Mathf.Rad2Deg); } // Calculate the new direction we will move in which takes into account // the random angle generated var MovementDirection = new Vector2(Mathf.Cos(rotateAngle * Mathf.Deg2Rad), Mathf.Sin(rotateAngle * Mathf.Deg2Rad)).normalized; if (tempBullet != null) { Rigidbody2D tempBulletRB = tempBullet.GetComponent <Rigidbody2D>(); // tempBulletRB.velocity = MovementDirection * bulletSpeed; tempBulletRB.velocity = MovementDirection * 5; Destroy(tempBullet, 0.3f); } } } else if ((rangedWeapon.GetComponent <Staff>().Name.Equals("Holy Hand Grenade")) && (timeBtwGrenade <= 0)) { timeBtwGrenade = startTimeBtwGrenade; if (time_stopped) { time_stop_counter -= 400; } // Rotate grenade sprite to go with player direction Quaternion fixedDirection = Quaternion.identity; fixedDirection.eulerAngles = new Vector3(0, 0, 180 - (direction * 180)); // Multiply by 180 to convert to degrees. Debug.Log("direction = " + direction); Vector2 projectilePosition = transform.position; float projectileAngle = Mathf.Round(direction * 2) / 2; // Round to nearest 0.5 if (projectileAngle == -0.5f) // if facing left { projectilePosition.x -= 0.15f; // offset from player pivot (to avoid shooting from chest) projectilePosition.y += 0.15f; // offset from player feet pivot GameObject go = (GameObject)Instantiate(grenade, projectilePosition, fixedDirection); go.GetComponent <Rigidbody2D>().velocity = Vector2.left; } else if (projectileAngle == 0) // if facing up { projectilePosition.y += 0.25f; GameObject go = (GameObject)Instantiate(grenade, projectilePosition, fixedDirection); go.GetComponent <Rigidbody2D>().velocity = Vector2.up; } else if (projectileAngle == 0.5f) // if facing right { projectilePosition.x += 0.15f; projectilePosition.y += 0.15f; GameObject go = (GameObject)Instantiate(grenade, projectilePosition, fixedDirection); go.GetComponent <Rigidbody2D>().velocity = Vector2.right; } else if ((projectileAngle == 1) || (projectileAngle == -1)) // if facing down { GameObject go = (GameObject)Instantiate(grenade, projectilePosition, fixedDirection); go.GetComponent <Rigidbody2D>().velocity = Vector2.down; } } if ((rangedWeapon.GetComponent <Staff>().Name.Equals("Laser Cannon")) && (timeBtwLaser <= 0)) { animator.SetTrigger("FiringLaser"); playerAudio.clip = laserCannonClip; playerAudio.Play(); timeBtwLaser = startTimeBtwLaser; if (time_stopped) { time_stop_counter -= 600; } // Rotate bullet sprite to go with player direction Quaternion fixedDirection = Quaternion.identity; fixedDirection.eulerAngles = new Vector3(0, 0, 180 - (direction * 180)); // Multiply by 180 to convert to degrees. Debug.Log("direction = " + direction); Vector2 projectilePosition = transform.position; float projectileAngle = Mathf.Round(direction * 2) / 2; // Round to nearest 0.5 if (projectileAngle == -0.5f) // if facing left { projectilePosition.x -= 0.15f; // offset from player pivot (to avoid shooting from chest) projectilePosition.y += 0.15f; // offset from player feet pivot GameObject go = (GameObject)Instantiate(laser, projectilePosition, fixedDirection); go.GetComponent <Rigidbody2D>().velocity = Vector2.left; } else if (projectileAngle == 0) // if facing up { projectilePosition.y += 0.25f; GameObject go = (GameObject)Instantiate(laser, projectilePosition, fixedDirection); go.GetComponent <Rigidbody2D>().velocity = Vector2.up; } else if (projectileAngle == 0.5f) // if facing right { projectilePosition.x += 0.15f; projectilePosition.y += 0.15f; GameObject go = (GameObject)Instantiate(laser, projectilePosition, fixedDirection); go.GetComponent <Rigidbody2D>().velocity = Vector2.right; } else if ((projectileAngle == 1) || (projectileAngle == -1)) // if facing down { GameObject go = (GameObject)Instantiate(laser, projectilePosition, fixedDirection); go.GetComponent <Rigidbody2D>().velocity = Vector2.down; } } } firing = true; if (blocking == true) { animator.SetTrigger("ExitShielding"); blocking = false; if (shieldEquipped) { timeBtwEquipment = 1f; timeBtwShield = 0; } } timeBtwProject = startTimeBtwProject; } }
void SetPlayerStartingItems() { int count = 0; if (Inventory != null) { Inventory.ItemUsed += Inventory_ItemUsed; Inventory.ItemRemoved += Inventory_ItemRemoved; if (meleeWeapon != null) { InventoryItemBase sword = meleeWeapon.GetComponent <InventoryItemBase>(); Inventory.AddItem(sword); // Update GUI label and add to existing list to minimize iteration on HUD slots later UpdateAssignedKeyText(count++, "J"); itemsEquipped.Add(sword); } // if (rangedWeapon != null) // { // InventoryItemBase startRanged = rangedWeapon.GetComponent<InventoryItemBase>(); // UpdateAssignedKeyText(count++, "K"); // Inventory.AddItem(startRanged); // } // if (equipment != null) // { // InventoryItemBase startEquip = equipment.GetComponent<InventoryItemBase>(); // UpdateAssignedKeyText(count++, "L"); // Inventory.AddItem(startEquip); // } if (GameController.control.grenade) { InventoryItemBase grenadeInventoryObject = GameObject.FindGameObjectWithTag("PlayerGrenade").GetComponent <Staff>(); Inventory.AddItem(grenadeInventoryObject); itemsEquipped.Add(grenadeInventoryObject); } if (GameController.control.shield) { InventoryItemBase shieldInventoryObject = GameObject.FindGameObjectWithTag("PlayerShield").GetComponent <Staff>(); Inventory.AddItem(shieldInventoryObject); itemsEquipped.Add(shieldInventoryObject); } if (GameController.control.shotgun) { InventoryItemBase shotgunInventoryObject = GameObject.FindGameObjectWithTag("PlayerShotgun").GetComponent <Staff>(); Inventory.AddItem(shotgunInventoryObject); itemsEquipped.Add(shotgunInventoryObject); } if (GameController.control.staff) { InventoryItemBase staffInventoryObject = GameObject.FindGameObjectWithTag("PlayerStaff").GetComponent <Staff>(); Inventory.AddItem(staffInventoryObject); itemsEquipped.Add(staffInventoryObject); } if (GameController.control.watch) { InventoryItemBase watchInventoryObject = GameObject.FindGameObjectWithTag("PlayerWatch").GetComponent <Staff>(); Inventory.AddItem(watchInventoryObject); itemsEquipped.Add(watchInventoryObject); } if (GameController.control.soda) { InventoryItemBase sodaInventoryObject = GameObject.FindGameObjectWithTag("PlayerSoda").GetComponent <Staff>(); Inventory.AddItem(sodaInventoryObject); itemsEquipped.Add(sodaInventoryObject); } if (GameController.control.cannon) { InventoryItemBase cannonInventoryObject = GameObject.FindGameObjectWithTag("PlayerCannon").GetComponent <Staff>(); Inventory.AddItem(cannonInventoryObject); itemsEquipped.Add(cannonInventoryObject); } SetPlayerItemBooleans(); } }