Пример #1
0
    void GenerateNewTrailElement()
    {
        m_CurrentDisplacement -= m_ZMoveStep;
        if (m_CurrentDisplacement <= m_ZMoveStep)
        {
            m_CurrentDisplacement = m_ZMoveMax;
        }
        GameObject   _tmpGo      = TrailElement.GetFreeElement();
        TrailElement _TmpElement = _tmpGo.GetComponent <TrailElement>();

        //GameObject _tmpGo = GameObject.Instantiate(m_TrailElementPrefab);
        //_tmpGo.name = "TRAIL_" + m_SpriteToDuplicate.name;
        //_tmpGo.hideFlags = HideFlags.None;
        //_tmpGo.transform.Equals(m_SpriteToDuplicate.transform);
        _TmpElement.m_Transform.SetParent(m_SpriteToDuplicate.transform, true);
        _TmpElement.m_Transform.localScale    = new Vector3(1, 1, 1);
        _TmpElement.m_Transform.localRotation = Quaternion.identity;
        _TmpElement.m_Transform.localPosition = Vector3.zero;
        if (m_TrailParent == null)
        {
            _TmpElement.m_Transform.SetParent(m_GlobalTrailContainer, true);
        }
        else
        {
            _TmpElement.m_Transform.SetParent(m_LocalTrailContainer, true);
        }
        Vector3 _NewPos = _tmpGo.transform.position;

        _NewPos.z = m_CurrentDisplacement;
        _TmpElement.m_Transform.position = _NewPos;
        _TmpElement.Initialise(this);
        _tmpGo.layer = LayerMask.NameToLayer(m_LayerName);
    }
        static bool Prefix(float t, ref float localF, ref int __result, TrailElementCollection __instance)
        {
            float num = __instance[__instance.capacity - 2].distance * Mathf.Clamp01(t);

            int i = 0;

            while (__instance[i].distance < num && i < __instance.capacity - 1)
            {
                i++;
            }

            if (i == 0 || i == __instance.capacity - 1)
            {
                localF   = 0f;
                __result = 0;
            }
            else
            {
                TrailElement trailElement = __instance[i - 1];
                localF   = (num - trailElement.distance) / (__instance[i].distance - trailElement.distance);
                __result = i - 1;
            }

            return(false);
        }
Пример #3
0
 /// <summary>
 /// Hide the current trail, delete all trails elements in this trail.
 /// </summary>
 public void HideTrail()
 {
     while (m_ElementsInTrail.Count > 0)
     {
         TrailElement _tmp = m_ElementsInTrail.Dequeue();
         if (_tmp != null)
         {
             _tmp.Hide();
         }
     }
 }
Пример #4
0
    private void Awake()
    {
        if (m_TrailCount == 0)
        {
            TrailElement.ClearFreeElements();
            Destroy(m_TrailElementPrefab);
            m_TrailElementPrefab = null;
        }

        m_TrailCount++;
        SetTrailParent(m_TrailParent);
        m_CurrentDisplacement = m_ZMoveMax;
        m_TrailElementPrefab  = GameObject.Find("TrailElementReference");
        if (m_TrailElementPrefab == null)
        {
            m_TrailElementPrefab = new GameObject();
            m_TrailElementPrefab.AddComponent <SpriteRenderer>();
            m_TrailElementPrefab.AddComponent <TrailElement>();
            m_TrailElementPrefab.name = "TrailElementReference";
#if HIDE_TRAIL_IN_HIERRARCHY
            m_TrailElementPrefab.hideFlags = HideFlags.HideInHierarchy;
#endif
            if (m_TrailParent == null)
            {
                m_TrailElementPrefab.transform.SetParent(m_GlobalTrailContainer, true);
            }
            else
            {
                m_TrailElementPrefab.transform.SetParent(m_LocalTrailContainer, true);
            }
            m_TrailElementPrefab.GetComponent <TrailElement>().Hide(false);
        }

        if (m_SpriteToDuplicate == null)
        {
            m_SpriteToDuplicate = GetComponent <SpriteRenderer>();
        }
        if (m_SpriteToDuplicate == null)
        {
            Debug.LogError("You need a SpriteRenderer on the same GameObject as the SpriteTrail script. Else, you can set the SpriteToDuplicate variable from the inspector");
            return;
        }

        m_PreviousPosSpawned = m_SpriteToDuplicate.transform.position;

        /*if (m_EnabledByDefault)
         *  EnableTrailEffect();*/
    }
Пример #5
0
 void OnLevelWasLoaded()
 {
     TrailElement.ClearFreeElements();
     Destroy(m_TrailElementPrefab);
     m_TrailElementPrefab = null;
 }