Zoom в Unity
Добавлено: 01 фев 2022, 10:41
Я написал метод zoom'а пальцами в Update. Но он не работал. Я провал что то менять но у меня не получилось. Проверьте пожалуйста этот код на наличие ошибок.
Синтаксис:
Используется csharp
[Header("Zoom")]
private float TwoTouchOldDist;
private float TwoTouchNewDist;
private float OldAndNewTouchDistDelta;
private float ZoomMoveSpeed;
public float ZoomSpeed = 1;
void Update()
{
if (Input.touchCount == 2)
{
if(Input.GetTouch(1).phase == TouchPhase.Began)
{
TwoTouchOldDist = Vector2.Distance(Input.GetTouch(0).position, Input.GetTouch(1).position);
}
if(Input.GetTouch(1).phase == TouchPhase.Moved)
{
TwoTouchNewDist = Vector2.Distance(Input.GetTouch(0).position, Input.GetTouch(1).position);
OldAndNewTouchDistDelta = TwoTouchNewDist - TwoTouchOldDist;
TwoTouchOldDist = TwoTouchNewDist;
ZoomMoveSpeed = cameraTransform.position.z + (OldAndNewTouchDistDelta * ZoomSpeed);
cameraTransform.localPosition = new Vector3(0, 0, Mathf.Clamp(ZoomMoveSpeed, distanceMin, distanceMax));
}
}
}
private float TwoTouchOldDist;
private float TwoTouchNewDist;
private float OldAndNewTouchDistDelta;
private float ZoomMoveSpeed;
public float ZoomSpeed = 1;
void Update()
{
if (Input.touchCount == 2)
{
if(Input.GetTouch(1).phase == TouchPhase.Began)
{
TwoTouchOldDist = Vector2.Distance(Input.GetTouch(0).position, Input.GetTouch(1).position);
}
if(Input.GetTouch(1).phase == TouchPhase.Moved)
{
TwoTouchNewDist = Vector2.Distance(Input.GetTouch(0).position, Input.GetTouch(1).position);
OldAndNewTouchDistDelta = TwoTouchNewDist - TwoTouchOldDist;
TwoTouchOldDist = TwoTouchNewDist;
ZoomMoveSpeed = cameraTransform.position.z + (OldAndNewTouchDistDelta * ZoomSpeed);
cameraTransform.localPosition = new Vector3(0, 0, Mathf.Clamp(ZoomMoveSpeed, distanceMin, distanceMax));
}
}
}