private void MoveLeft() { if (!IsMovementPossible(1)) { return; } currentPosition += 1; tweener = playerPosition.gameObject.AddComponent <FitInTheHole_FigureTweener>(); tweener.Tween(playerPosition.position, positionVariants[currentPosition].position, 1); }
private void MoveRight() { if (!IsMovementPossible(-1)) { return; } currentPosition -= 1; tweener = m_PlayerPosition.gameObject.AddComponent <FitInTheHole_FigureTweener>(); tweener.Tween(m_PlayerPosition.position, m_PositionsVariants[currentPosition].position); }
//методы передвижения на костылях, как быстро сделать по другому не придумал //для определения вращения передаём дополнительно направление в какую сторону мы двигаемся private void MoveLeft() { Vector3 pos = m_PlayerPosition.transform.position; if (m_PlayerPosition.transform.position.x == -5f) { return; } //проверим находится ли слева кубик, если нет то просто подвинем влево иначе вверх tweener = m_PlayerPosition.gameObject.AddComponent <FitInTheHole_FigureTweener>(); if (pos.y > 0.5f && !m_ListCubesPosition.Contains(new Vector3(pos.x - 1f, pos.y, pos.z)) && m_ListCubesPosition.Contains(new Vector3(pos.x, pos.y - 1f, pos.z)) && m_ListCubesPosition.Contains(new Vector3(pos.x - 1, pos.y - 1f, pos.z))) { tweener.Tween(pos, pos += new Vector3(-1f, 0f, 0f), left); } else if (pos.y > 0.5f && !m_ListCubesPosition.Contains(new Vector3(pos.x - 1f, pos.y, pos.z)) && m_ListCubesPosition.Contains(new Vector3(pos.x, pos.y - 1f, pos.z))) { tweener.Tween(pos, pos += new Vector3(-1f, 0f, 0f), left); tweener.Tween(pos, pos += new Vector3(0f, -1f, 0f), left); } else if (pos.y > 0.5f && !m_ListCubesPosition.Contains(new Vector3(pos.x - 1f, pos.y, pos.z)) && !m_ListCubesPosition.Contains(new Vector3(pos.x, pos.y - 1f, pos.z))) { tweener.Tween(pos, pos += new Vector3(0f, -1f, 0f), left); } else if (m_ListCubesPosition.Contains(new Vector3(pos.x - 1f, pos.y, pos.z)) && m_ListCubesPosition.Contains(new Vector3(pos.x - 1f, pos.y + 1f, pos.z))) { tweener.Tween(pos, pos += new Vector3(0f, 1f, 0f), left); } else if (m_ListCubesPosition.Contains(new Vector3(pos.x - 1f, pos.y, pos.z)) && !m_ListCubesPosition.Contains(new Vector3(pos.x - 1f, pos.y + 1f, pos.z))) { tweener.Tween(pos, pos += new Vector3(-1f, 0f, 0f), left); tweener.Tween(pos, pos += new Vector3(0f, 1f, 0f), left); } else { tweener.Tween(pos, pos += new Vector3(-1f, 0f, 0f), left); } }
private void MoveRight() { if (m_PlayerPosition.transform.position.x == 5f) { return; } Vector3 pos = m_PlayerPosition.transform.position; // currentPosition -= 1; tweener = m_PlayerPosition.gameObject.AddComponent <FitInTheHole_FigureTweener>(); if (pos.y > 0.5f && !m_ListCubesPosition.Contains(new Vector3(pos.x + 1f, pos.y, pos.z)) && m_ListCubesPosition.Contains(new Vector3(pos.x, pos.y - 1f, pos.z)) && m_ListCubesPosition.Contains(new Vector3(pos.x + 1f, pos.y - 1f, pos.z))) { tweener.Tween(pos, pos += new Vector3(+1f, 0f, 0f), right); } else if (pos.y > 0.5f && !m_ListCubesPosition.Contains(new Vector3(pos.x + 1f, pos.y, pos.z)) && m_ListCubesPosition.Contains(new Vector3(pos.x, pos.y - 1f, pos.z))) { tweener.Tween(pos, pos += new Vector3(+1f, 0f, 0f), right); tweener.Tween(pos, pos += new Vector3(0f, -1f, 0f), right); } else if (pos.y > 0.5f && !m_ListCubesPosition.Contains(new Vector3(pos.x + 1f, pos.y, pos.z)) && !m_ListCubesPosition.Contains(new Vector3(pos.x, pos.y - 1f, pos.z))) { tweener.Tween(pos, pos += new Vector3(0f, -1f, 0f), right); } else if (m_ListCubesPosition.Contains(new Vector3(pos.x + 1f, pos.y, pos.z)) && m_ListCubesPosition.Contains(new Vector3(pos.x + 1f, pos.y + 1f, pos.z))) { tweener.Tween(pos, pos += new Vector3(0f, 1f, 0f), right); } else if (m_ListCubesPosition.Contains(new Vector3(pos.x + 1f, pos.y, pos.z)) && !m_ListCubesPosition.Contains(new Vector3(pos.x + 1f, pos.y + 1f, pos.z))) { tweener.Tween(pos, pos += new Vector3(+1f, 0f, 0f), right); tweener.Tween(pos, pos += new Vector3(0f, 1f, 0f), right); } else { tweener.Tween(pos, pos += new Vector3(+1f, 0f, 0f), right); } }