Класс DragCamera :
Класс написан для тех приложений, где камера смотрит сверху-вниз на какое-то игровое поле. По движению пальца, камера перемещается. Примерно как скролл карт. При двойном тапе, возвращается в исходное положение. Поле под камерой должно иметь коллайдер - используются лучи.
DragCamera.cs
- Код: Выделить всё
//Created by Neodrop
//neodrop@unity3d.ru
using UnityEngine;
[RequireComponent(typeof(Camera))]
public class DragCamera : MonoBehaviour
{
public float speed = .5f, tapSpeed = .3f;
Vector3 fixedPos;
float lastTapTime = 0f;
void Start()
{
fixedPos = camera.transform.position;
}
void Update()
{
if (iPhoneInput.touchCount == 1 && iPhoneInput.touches[0].phase == iPhoneTouchPhase.Began)
{
if (lastTapTime + tapSpeed > Time.realtimeSinceStartup) camera.transform.position = fixedPos;
lastTapTime = Time.realtimeSinceStartup;
}
}
void FixedUpdate()
{
if (iPhoneInput.touchCount == 1 && iPhoneInput.touches[0].phase == iPhoneTouchPhase.Moved)
MoveCamera();
}
void MoveCamera()
{
Ray r = camera.ScreenPointToRay(new Vector3(iPhoneInput.touches[0].position.x, iPhoneInput.touches[0].position.y, 0f));
RaycastHit hit0;
if (!Physics.Raycast(r, out hit0, 100))return;
Vector3 delta = iPhoneInput.touches[0].deltaPosition - new Vector2(hit0.point.x, hit0.point.y);
delta.z = delta.y; delta.y = 0f;
camera.transform.position += delta * Time.deltaTime * speed * -1;
}
}