public void HandleBlastZoneInput(Vector2 touchPosition) { if (!tickLock && HasFirepower()) { BlastZone touchedBlastZone = CheckForBlastZones(touchPosition); if (touchedBlastZone != null) { if (touchedBlastZone.CanGrow()) { touchedBlastZone.GrowNextTick(); ticksFired++; } } else if (zoneCount < MAX_ZONES) { Ray ray = Camera.main.ScreenPointToRay(new Vector3(touchPosition.x, touchPosition.y, 0)); RaycastHit hit; if (blastCollider.Raycast(ray, out hit, 1000.0F)) { GameObject zoneMade = GameObject.Instantiate(blastZone, hit.point, Quaternion.identity); BlastZones.Add(zoneMade.GetComponent <BlastZone>()); zoneMade.transform.parent = blastZoneParent; zoneMade.GetComponent <BlastZone>().CreateZone(Metronome.Instance.currentTime); ticksFired++; zoneCount++; } } tickUnlockTime = new NotationTime(Metronome.Instance.currentTime); tickUnlockTime.Add(new NotationTime(0, 0, 1)); tickLock = true; } }
private void Start() { powerups = new PowerUp[9]; powerups[0] = new BlastZone(false, PUE.BZ_hasDuration, PUE.BZ_duration, PUE.BZ_radius, PUE.BZ_power, PUE.BZ_upwardForce, PUE.BZ_playerPower, PUE.BZ_playerUpwardForce); powerups[1] = new Chillout(false, PUE.CO_hasDuration, PUE.CO_duration, PUE.CO_radius); powerups[2] = new GottaGoFast(true, PUE.GF_hasDuration, PUE.GF_duration, PUE.GF_radius, PUE.GF_aiSpeedMultiplier, PUE.GF_playerSpeedMultiplier); powerups[3] = new CantTouchThis(true, PUE.CTT_hasDuration, PUE.CTT_duration, PUE.CTT_radius); powerups[4] = new SneakySnake(true, PUE.SS_hasDuration, PUE.SS_duration, PUE.SS_radius); powerups[5] = new BallsOfSteel(true, PUE.BS_hasDuration, PUE.BS_duration, PUE.BS_radius, PUE.BS_material); powerups[6] = new SuperBounce(true, PUE.SB_hasDuration, PUE.SB_duration, PUE.SB_radius, PUE.SB_bounceMultiplier); powerups[7] = new CalmDown(false, PUE.CD_hasDuration, PUE.CD_duration, PUE.CD_radius, PUE.CD_aiSpeedMultiplier, PUE.CD_playerSpeedMultiplier); powerups[8] = new DisMine(false, PUE.DM_hasDuration, PUE.DM_duration, PUE.DM_radius, PUE.DM_disMine, PUE.DM_positionOffSet); disableTimer = disableTimerStart; itemNumber = Mathf.Clamp(itemNumber, 0, (powerups.Length)); }
public BlastZone CheckForBlastZones(Vector2 touchPosition) { Ray ray = Camera.main.ScreenPointToRay(new Vector3(touchPosition.x, touchPosition.y, 0)); RaycastHit hit; BlastZone zone = null; float zDistance = float.PositiveInfinity; if (blastCollider.Raycast(ray, out hit, 1000.0f)) { foreach (BlastZone z in BlastZones) { float d = Vector2.Distance(hit.point.xz(), z.transform.position.xz()) - z.zoneScale / 2; if (d <= 0 && d < zDistance) { zDistance = d; zone = z; } } } return(zone); }
void Start() { zone = blastZoneObject.GetComponent <BlastZone>(); }