@Over_grif

Ограничение соприкосновением с экраном?

Помогите. Напишите пожалуйста в коде так чтобы при соприкосновением с экранов в определеной области не работал свайп. Тоесть джостик который уменя влевой стороне работал но свайп экрана пальцом не работал. И еще если можете то уменя небольшая трясучка при свайпе можете исправить? Вот код:
using UnityEngine;

public class SwipeCamera : MonoBehaviour
{
    public float rotateSpeed = 1f; // скорость вращения камеры при свайпе
    public float maxCameraHeight = 10f; // максимальная высота камеры
    public float minCameraHeight = 1f; // минимальная высота камеры

    private float currentHeight; // текущая высота камеры
    private float swipeDeltaX; // смещение по X при свайпе
    private float swipeDeltaY; // смещение по Y при свайпе
    private Vector3 previousPosition; // предыдущая позиция мыши

    public Transform target; // объект, который должен вращаться вместе с камерой

    private void Start()
    {
        currentHeight = transform.position.y; // сохраняем начальную высоту камеры
    }

    private void Update()
    {
        if (Input.touchCount != 1) return; // проверяем, что на экране только одно касание

        Touch touch = Input.GetTouch(0);

        if (touch.phase == TouchPhase.Began)
        {
            previousPosition = touch.position; // запоминаем начальную позицию пальца
        }

        if (touch.phase == TouchPhase.Moved)
        {
            swipeDeltaX += (touch.position.x - previousPosition.x) * rotateSpeed; // вычисляем смещение по X
            swipeDeltaY += (touch.position.y - previousPosition.y) * rotateSpeed; // вычисляем смещение по Y

            // ограничиваем угол поворота камеры по вертикали, чтобы камера не перевернулась на 360 градусов
            swipeDeltaY = Mathf.Clamp(swipeDeltaY, -80f, 80f);

            transform.eulerAngles = new Vector3(-swipeDeltaY, swipeDeltaX, 0f); // поворачиваем камеру по смещениям

            previousPosition = touch.position; // обновляем предыдущую позицию пальца
        }

        // ограничиваем максимальную и минимальную высоту камеры
        currentHeight = Mathf.Clamp(currentHeight - touch.deltaPosition.y * 0.01f, minCameraHeight, maxCameraHeight);
        transform.position = new Vector3(transform.position.x, currentHeight, transform.position.z); // обновляем позицию камеры

        target.eulerAngles = new Vector3(0f, transform.eulerAngles.y, 0f); // поворачиваем объект вместе с камерой
    }
}
  • Вопрос задан
  • 40 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы