линия

Главная

воскресенье, 10 января 2016 г.

Unity2d - Перемещение камеры нажатием на экран

Задача: Необходимо реализовать возможность перемещения  положения камеры нажатием  на дисплей телефона (компьютера). Это на Unity делается очень очень просто. Создается скрипт CameraMove   и вешается на Камеру.




using UnityEngine;
using System.Collections;
using Assets.Scripts;

public class CameraMove : MonoBehaviour
{
    private float dragSpeed = 0.01f;
    private float timeDragStarted;
    private Vector3 previousPosition = Vector3.zero;

    // Update is called once per frame
    void Update()
    {
     //тут может быть какое то условие, например на проверку состояния игры.
        //if (GameManager.CurrentGameState == GameState.Playing)
        //{
            //Нажимаем на экран
            if (Input.GetMouseButtonDown(0))
            {
                timeDragStarted = Time.time;
                dragSpeed = 0f;
                previousPosition = Input.mousePosition;
            }
            //перемещение 
            else if (Input.GetMouseButton(0) && Time.time - timeDragStarted > 0.05f)
            {
                //Вычисляем расстояние  между начальными и текущими координатам
                Vector3 input = Input.mousePosition;
                float deltaX = (previousPosition.x - input.x)  * dragSpeed;
                float deltaY = (previousPosition.y - input.y) * dragSpeed;
                //Смотрим границы по X
                float newX = Mathf.Clamp(transform.position.x + deltaX, 0, 13.36336f);
    //Смотрим границы по Y
                float newY = Mathf.Clamp(transform.position.y + deltaY, -2, 4.715f);
                //Задаем новые координаты для камеры
                transform.position = new Vector3(
                    newX,
                    newY,
                    transform.position.z);

                previousPosition = input;
                //для маленьких изменений увеличиваем 
                if(dragSpeed < 0.1f) dragSpeed += 0.002f;
            }
       // }
    }

   
}

Комментариев нет:

Отправить комментарий