public void SpawnBoard(Vector3 i_NailPosition) { NailComponent l_CurrentNail = m_NailComponents[0]; m_Destination = new Vector3(i_NailPosition.x - (l_CurrentNail.transform.position.x - transform.position.x), i_NailPosition.y, i_NailPosition.z); m_CurrentNailBoardState = NailBoardStates.SPAWNING; }
// Update is called once per frame void Update() { float l_Ratio = 0.0f; switch (m_CurrentNailBoardState) { case NailBoardStates.NAIL: // Don't Move break; case NailBoardStates.MOVING_TO_NAIL: l_Ratio = m_CurrentTimeOfTransition / m_TimeOfNailTransition; transform.position = Vector3.Lerp(m_FromPosition, m_Destination, m_TransitionCurve.Evaluate(l_Ratio)); if (l_Ratio >= 1) { m_CurrentNailBoardState = NailBoardStates.NAIL; m_CurrentTimeOfTransition = 0.0f; return; } m_CurrentTimeOfTransition += Time.deltaTime; break; case NailBoardStates.DESPAWNING: l_Ratio = m_CurrentTimeOfTransition / m_TimeOfBoardTransition; transform.position = Vector3.Lerp(m_FromPosition, m_Destination, m_TransitionCurve.Evaluate(l_Ratio)); if (l_Ratio >= 1) { Destroy(this.gameObject); return; } m_CurrentTimeOfTransition += Time.deltaTime; break; case NailBoardStates.SPAWNING: l_Ratio = m_CurrentTimeOfTransition / m_TimeOfBoardTransition; transform.position = Vector3.Lerp(m_FromPosition, m_Destination, m_TransitionCurve.Evaluate(l_Ratio)); if (l_Ratio >= 1) { m_CurrentNailBoardState = NailBoardStates.NAIL; m_CurrentTimeOfTransition = 0.0f; return; } m_CurrentTimeOfTransition += Time.deltaTime; break; default: throw new ArgumentOutOfRangeException(); } }
void Awake() { m_NailComponents = GetComponentsInChildren <NailComponent>(); m_CurrentNailIndex = 0; m_CurrentNailBoardState = NailBoardStates.NAIL; m_CurrentTimeOfTransition = 0.0f; m_FromPosition = transform.position; if (m_NailComponents.Length <= 0) { Debug.LogError("No Nails On Board"); } }
public void MoveToNextNail() { if (m_CurrentNailIndex == m_NailComponents.Length - 1) { GameManager.Instance.MoveToNextBoard(); return; } // Move to next nail m_CurrentNailBoardState = NailBoardStates.MOVING_TO_NAIL; NailComponent l_CurrentNail = m_NailComponents[m_CurrentNailIndex]; NailComponent l_NextNai = m_NailComponents[++m_CurrentNailIndex]; m_FromPosition = transform.position; m_Destination = new Vector3(m_FromPosition.x + (l_CurrentNail.transform.position.x - l_NextNai.transform.position.x), m_FromPosition.y, m_FromPosition.z); }
public void DespawnBoard(Vector3 i_Position) { m_FromPosition = transform.position; m_Destination = i_Position; m_CurrentNailBoardState = NailBoardStates.DESPAWNING; }