Beispiel #1
0
    void Update()
    {
        float totalDistance     = Vector3.Distance(m_startPoint, m_endPoint);
        float remainingDistance = Vector3.Distance(transform.position, m_endPoint);
        float alpha             = Mathf.Clamp((totalDistance - remainingDistance + m_sphereSpeed) / totalDistance, 0.0f, 1.0f);

        transform.position = Vector3.Lerp(m_startPoint, m_endPoint, alpha);
        transform.rotation = Quaternion.Euler(0.0f, transform.rotation.eulerAngles.y + 360 * Time.deltaTime, 0.0f);
        if (alpha == 1.0f)
        {
            m_posIndex++;
            if (m_posIndex < m_positions.Length)
            {
                m_startPoint = m_endPoint;
                m_endPoint   = m_positions[m_posIndex];
            }
            else
            {
                m_cubeGrid.ActivateCubeAt(m_colorKey, m_destinationCoord);
                m_turret.Reload(GameManager.instance.GetJewel);
                Destroy(gameObject);
            }
        }
    }