Kripix999
@Kripix999
Да что тут коротко о себе можно написать?

Как ограничить количество свайпов?

Мне нужно что бы можно было только один раз свайпнуть в правую или в левую сторону
public class SmoothMoveSwipe : MonoBehaviour
{

    private Vector2 startTouchPosition, endTouchPosition;
    private Vector3 startRocketPosition, endRocketPosition;
    private float flyTime;
    private float flightDuration = 0.1f;

    // Update is called once per frame
    private void Update()
    {
        if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began)
            startTouchPosition = Input.GetTouch(0).position;

        if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Ended)
        {
            endTouchPosition = Input.GetTouch(0).position;

            if ((endTouchPosition.x < startTouchPosition.x) && transform.position.x > -1.75f)
                StartCoroutine(Fly("left"));

            if ((endTouchPosition.x > startTouchPosition.x) && transform.position.x < 1.75f)
                StartCoroutine(Fly("right"));
        }
    }

    private IEnumerator Fly(string whereToFly)
    {
        switch (whereToFly)
        {
            case "left":
                flyTime = 0f;
                startRocketPosition = transform.position;
                endRocketPosition = new Vector3
                    (startRocketPosition.x - 1.75f, transform.position.y, transform.position.z);

                while (flyTime < flightDuration)
                {
                    flyTime += Time.deltaTime;
                    transform.position = Vector2.Lerp
                        (startRocketPosition, endRocketPosition, flyTime / flightDuration);
                    yield return null;
                }
                break;

            case "right":
                flyTime = 0f;
                startRocketPosition = transform.position;
                endRocketPosition = new Vector3
                    (startRocketPosition.x + 1.75f, transform.position.y, transform.position.z);

                while (flyTime < flightDuration)
                {
                    flyTime += Time.deltaTime;
                    transform.position = Vector2.Lerp
                        (startRocketPosition, endRocketPosition, flyTime / flightDuration);
                    yield return null;
                }
                break;
        }

    }
}
  • Вопрос задан
  • 63 просмотра
Пригласить эксперта
Ответы на вопрос 2
mopsicus
@mopsicus
Таки в чем проблема? Сделайте флаг, что свайп уже был и потом проверяйте его при следующем свайпе.
Ответ написан
DanceM
@DanceM Куратор тега Unity Game Engine
Кто хочет -ищет способ, кто не хочет -ищет причину
Перед тем, как делать "первый" проект, пройдите (хотя бы) проекты по этой книге
Unity в действии. Мультиплатформенная разработка на C# , иначе код для Вашего первого проекта будут постоянно писать другие люди вместо Вас.

По свайпам, как уже указали, нужен флаг. Примерно:
ЕСЛИ (не БылСвайп) ТОГДА проверяем свайпы.
ну и в методе свайпа:
БылСвайп = да
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
PHYGITALISM Москва
от 80 000 до 130 000 ₽
от 130 000 до 200 000 ₽
BP Mobile Москва
от 170 000 ₽
25 мая 2020, в 15:19
10000 руб./за проект
25 мая 2020, в 14:54
50000 руб./за проект