public IEnumerator MonsterBeamCor(WeaponPort port, GameObject player, float chargeUpTime, float fireDelay, float fireDuration) { float startTime = Time.time; EnemyController emc = gameObject.GetComponent <EnemyController>(); LineRenderer lr = gameObject.AddComponent <LineRenderer>(); lr.startWidth = .1f; lr.endWidth = .1f; while (startTime + chargeUpTime > Time.time) { Vector3 forward = emc.Turret.transform.forward.normalized; Vector3 start = port.weapon.FiringPoint.transform.position; lr.SetPositions(new Vector3[] { start, start + (forward * 10) }); yield return(new WaitForSeconds(0)); } emc.CanMove = false; emc.CanTurn = false; yield return(new WaitForSeconds(fireDelay)); //create beam lr.startWidth = 1; lr.endWidth = 1; yield return(new WaitForSeconds(fireDuration)); //destroy beam emc.CanTurn = true; emc.CanMove = true; Destroy(lr); }
public void SetupPortImages() { for (int i = 0; i < hull.weaponPorts.Length; i += 1) { Vector3 position = Camera.main.WorldToScreenPoint(hull.weaponPorts[i].position); WeaponPort newPort = Instantiate(weaponPortGameObject.gameObject, position, Quaternion.identity).GetComponent <WeaponPort>(); clonedPorts.Add(newPort); newPort.weaponPortIndex = i; newPort.transform.SetParent(weaponPortGameObject.transform.parent); newPort.gameObject.SetActive(true); } }
public void ShootWeaponPort(WeaponPort port, Vector3 target, bool player = true) { if (Time.time > port.weapon.shootTime + port.weapon.lastWeaponFireTime) { Vector3 weaponFirePoint = port.weapon.FiringPoint.transform.position; Vector3 bulletTraj = target - weaponFirePoint; GameObject bullet = Instantiate(port.weapon.wepInfo.BulletPrefab, weaponFirePoint, Quaternion.identity); bullet.GetComponent <Rigidbody>().velocity = bulletTraj.normalized * port.weapon.velocity; bullet.GetComponent <BulletCode>().playerBullet = player; port.weapon.lastWeaponFireTime = Time.time; } }
public void SelectPort(WeaponPort wp) { if (selectedPort && selectedPort == wp && weapons[selectedPort.weaponPortIndex]) { Destroy(weapons[selectedPort.weaponPortIndex].gameObject); weapons[selectedPort.weaponPortIndex] = null; MiscData.currentWeapons = new int[weapons.Length]; for (int i = 0; i < weapons.Length; i += 1) { if (weapons[i] != null) { MiscData.currentWeapons[i] = weapons[i].id; } else { MiscData.currentWeapons[i] = -1; } } } else { selectedPort = wp; if (selectedWeapon) { if (weapons[selectedPort.weaponPortIndex]) { Destroy(weapons[selectedPort.weaponPortIndex].gameObject); } weapons[selectedPort.weaponPortIndex] = Instantiate(selectedWeapon.gameObject, hull.weaponPorts[selectedPort.weaponPortIndex].transform.position, hull.weaponPorts[selectedPort.weaponPortIndex].transform.rotation).GetComponent <Weapon>(); weapons[selectedPort.weaponPortIndex].barrel = hull.weaponPorts[selectedPort.weaponPortIndex]; } //Recolors port images for (int i = 0; i < clonedPorts.Count; i += 1) { if (clonedPorts[i] != selectedPort) { clonedPorts[i].GetComponent <Image>().color = deselectedPortColorPrimary; clonedPorts[i].transform.Find("FirstBox").GetComponent <Image>().color = deselectedPortColorSecondary; clonedPorts[i].transform.Find("FirstBox").Find("SecondBox").GetComponent <Image>().color = deselectedPortColorPrimary; } } selectedPort.GetComponent <Image>().color = selectedPortColorPrimary; selectedPort.transform.Find("FirstBox").GetComponent <Image>().color = selectedPortColorSecondary; selectedPort.transform.Find("FirstBox").Find("SecondBox").GetComponent <Image>().color = selectedPortColorPrimary; } }
public void HideTabs() { selectedWeapon = null; selectedPort = null; hullTab.color = thrusterTab.color = weaponTab.color = deselectedColor; for (int i = 0; i < imageButtons.Count; i += 1) { Destroy(imageButtons[i].gameObject); } for (int i = 0; i < clonedPorts.Count; i += 1) { Destroy(clonedPorts[i].gameObject); } clonedPorts.Clear(); imageButtons.Clear(); yPos = spacing; }