public void HitIndicator(Vector3 hitFromPos) { if (dead) { return; } if (pe.hasEMP) { hitFromPos += DarkRef.RandomVector3(-Vector3.one, Vector3.one) * (hitFromPos - transform.position).magnitude * 0.75f; } hitFromPos.y = 0f; for (int i = 0; i < hitIndicators.Count; i++) { if (Time.time - lastHitIndicate < 0.05f && (hitIndicators[i].hitFromPosition - hitFromPos).sqrMagnitude < 0.01f) { hitIndicators[i].initTime = Time.time; return; } } GameObject newInstance = (GameObject)Instantiate(hitIndicatorPrefab); newInstance.transform.parent = GeneralVariables.uiController.hitIndicatorRoot; newInstance.transform.localPosition = Vector3.zero; newInstance.transform.localScale = Vector3.one; Vector3 rot = newInstance.transform.localEulerAngles; rot.z = Mathf.Round(-CalculateIndicatorRotation(hitFromPos - transform.position) / hitIndicatorRotRound) * hitIndicatorRotRound; newInstance.transform.localRotation = Quaternion.Euler(rot); HitIndicatorInfo hii = new HitIndicatorInfo(); hii.instance = newInstance; hii.lifetime = 0.3f; hii.hitFromPosition = hitFromPos; hii.initTime = Time.time; hii.impulseTarget = 1.5f; hii.instance.transform.GetChild(0).localPosition = new Vector3(-1.5f, uic.crosshairs.hitIndicatorOffset + 40f, 0f); hitIndicators.Add(hii); lastHitIndicate = Time.time; }
private IEnumerator HandleIndicatorRemoval(HitIndicatorInfo hii) { AlphaGroupUI agu = hii.instance.GetComponent <AlphaGroupUI>(); while (agu.alpha > 0f) { agu.alpha -= Time.deltaTime * 5f; agu.alpha = Mathf.Clamp01(agu.alpha); hii.instance.transform.GetChild(0).localScale = new Vector3(0.85f + (agu.alpha * 0.15f), 0.7f + (agu.alpha * 0.3f), 0.85f + (agu.alpha * 0.15f)) * hii.impulseTarget; Vector3 rot = hii.instance.transform.localEulerAngles; rot.z = Mathf.Round(-CalculateIndicatorRotation(hii.hitFromPosition - transform.position) / hitIndicatorRotRound) * hitIndicatorRotRound; hii.instance.transform.localRotation = Quaternion.Slerp(hii.instance.transform.localRotation, Quaternion.Euler(rot), Time.deltaTime * 10f); hii.instance.transform.GetChild(0).localPosition = new Vector3(-1.5f, uic.crosshairs.hitIndicatorOffset + 37f + (agu.alpha * 2f), 0f); yield return(null); } Destroy(hii.instance); hitIndicators.Remove(hii); }