/// <summary> /// Faz a troca de armas. /// </summary> private void SwitchWeapons() { float mouseAxis = Input.GetAxisRaw("Mouse ScrollWheel"); int weaponsAmount = this.weapons.listWeapons.Count - 1; #region Scroll if (mouseAxis > 0) { if (this.indexWeapon == (byte)weaponsAmount) { this.indexWeapon = 0; } else { this.indexWeapon++; } } else if (mouseAxis < 0) { this.indexWeapon--; } #endregion this.indexWeapon = (byte)Mathf.Clamp(this.indexWeapon, 0, (byte)weaponsAmount); SOWeapon weapon = this.weapons.listWeapons[indexWeapon].weapon; this.sShoot.SetWeaponValues(weapon, this.superBagBullet, this.indexWeapon); }
private void Start() { this.indexWeapon = 0; // Por default a arma utilizada é 0. SOWeapon weapon = this.weapons.listWeapons[indexWeapon].weapon; this.CreateWeapon(); this.sShoot.SetWeaponValues(weapon, this.superBagBullet, this.indexWeapon); }
/// <summary> /// Cria todas as armas. /// </summary> private void CreateWeapon() { //Cria todas as armas dentro da lista. for (byte i = 0; i < this.weapons.listWeapons.Count; i++) { SOWeapon weapon = this.weapons.listWeapons[i].weapon; this.sShoot.InstantiateBullet(weapon, superBagBullet, i); } }
/// <summary> /// Instancia todas as balas. /// </summary> /// <param name="weapon">Arma dentro da lista de armas.</param> /// <param name="superBagBullet">Transform onde são guardados TODAS as MOCHILAS.</param> /// <param name="indexWeapon">Índice da arma dentro da lista</param> public void InstantiateBullet(SOWeapon weapon, Transform superBagBullet, byte indexWeapon) { this.CreateBag(weapon.name, superBagBullet); // Criando e afiliando a mochila em superBagBullet. Transform bagBullet = superBagBullet.GetChild(indexWeapon).transform; // índice da mochila criada. for (byte i = 0; i < weapon.bulletAmount; i++) { this.CreateBullet(weapon, bagBullet); // Instanciando e afiliando as balas a mochila. } }
/// <summary> /// Recebe os valores da arma atual. /// </summary> /// <param name="weapon">Informações do SOWeapon.</param> /// <param name="bulletObj">Prefab instanciada da SOWeapon.</param> public void GetBulletValues(SOWeapon weapon, GameObject bulletObj) { Bullet bullet = bulletObj.GetComponent <Bullet>(); if (bullet) { bullet.infoData = weapon.bullet; } else { Debug.Assert(bullet, "Componente Bullet não adicionado na bala."); } }
/// <summary> /// Cria as balas. /// </summary> /// <param name="weapon">Informações do SOWeapon.</param> /// <param name="bagBullet">Transform onde são guardado TODAS as BALAS.</param> public void CreateBullet(SOWeapon weapon, Transform bagBullet) { GameObject bulletObj = Instantiate(weapon.bullet.prefab, bagBullet); Bullet bullet = bulletObj.GetComponent <Bullet>(); bulletObj.name = weapon.bullet.prefab.name; if (bullet == null) { bulletObj.AddComponent(typeof(Bullet)); } this.GetBulletValues(weapon, bulletObj); }
/// <summary> /// Recebe os valores da arma atual selecionada. /// </summary> /// <param name="weapon">Informações do SOWeapon.</param> /// <param name="bagBullet">Transform (superBagBullet) onde está guardada TODAS as balas.</param> private void GetWeaponValues(SOWeapon weapon, Transform bagBullet) { this.currentWeapon = weapon; this.bagBullet = bagBullet; MeshRenderer[] meshRend = this.bagBullet.transform.GetComponentsInChildren <MeshRenderer>(); if (meshRend != null) { foreach (MeshRenderer rend in meshRend) { rend.material.color = weapon.bullet.materialColor; } } }
public bool TryAddWeapon(SOWeapon weaponToAdd) { if (allWeaponsInPossessionInfo.Count == weaponSlotsInUI.Length) { return(false); } else { WeaponInfo newWeaponInfo = new WeaponInfo(); newWeaponInfo.SOweapon = weaponToAdd; newWeaponInfo.bulletsLeft = weaponToAdd.magSize; allWeaponsInPossessionInfo.Add(newWeaponInfo); weaponSlotsInUI[allWeaponsInPossessionInfo.Count - 1].weaponImage.sprite = weaponToAdd.bulletPrefab.GetComponent <SpriteRenderer>().sprite; weaponSlotsInUI[allWeaponsInPossessionInfo.Count - 1].bulletsText.gameObject.SetActive(true); weaponSlotsInUI[allWeaponsInPossessionInfo.Count - 1].bulletsText.text = newWeaponInfo.bulletsLeft + "/" + newWeaponInfo.SOweapon.magSize; return(true); } }
/// <summary> /// Define os valores para a arma atual. /// </summary> /// <param name="indexWeapon">Índice da lista de armas.</param> public void SetWeaponValues(SOWeapon weapon, Transform superBagBullet, byte indexWeapon) { Transform bagBullet = superBagBullet.GetChild(indexWeapon).transform; this.GetWeaponValues(weapon, bagBullet); }