示例#1
0
    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;
    }
示例#2
0
    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);
    }