Unity - проблема масштабирования/преобразования камеры в AndroidC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Unity - проблема масштабирования/преобразования камеры в Android

Сообщение Anonymous »

Приведенный ниже скрипт отвечает за вращение и масштабирование (регулировку преобразования камер) основной камеры, поворот работает нормально, а масштабирование почти работает нормально.
После сборки на устройстве Android я могу плавно увеличивать и уменьшать масштаб одним движением, моя проблема заключается в том, когда я отпускаю сжатие.
если я полностью увеличиваю масштаб, затем отпускаю, а затем снова уменьшаю масштаб при небольшом движении камеры преобразуют снимки обратно в то, что, как я полагаю, является максимальным диапазоном камеры. Если у меня широкое касание, камера правильно медленно отдаляется обратно при положении моих пальцев.
Независимо от того, как пользователь сначала выполняет сжимающее движение, я бы хотел, чтобы камера всегда начинала «уменьшать масштаб» из исходного положения. Я предполагаю, что мне нужно сохранить положение в точке отпускания, а затем начать обратно оттуда, но я не могу разберись. любая помощь будет полезна, та.
void LateUpdate()
{
if (_target)
{
if (Input.touchCount == 1 && Input.GetTouch(0).phase == TouchPhase.Moved)
{
// For single finger touch, detect movement for rotation
_velocityX += _xSpeed * Input.GetTouch(0).deltaPosition.x * 0.02f;
_velocityY += _ySpeed * Input.GetTouch(0).deltaPosition.y * 0.02f;
}
else if (Input.touchCount == 2)
{
// For two-finger touch, detect pinch for zooming
Touch touchZero = Input.GetTouch(0);
Touch touchOne = Input.GetTouch(1);

Vector2 touchDeltaPos = touchZero.position - touchOne.position;
float touchDeltaMag = touchDeltaPos.magnitude;

_pinchDistances[_pinchFramesIndex] = touchDeltaMag;
_pinchFramesIndex = (_pinchFramesIndex + 1) % _pinchFramesCount;

float avgPinchDistance = 0.0f;
foreach (float distance in _pinchDistances)
{
avgPinchDistance += distance;
}
avgPinchDistance /= _pinchFramesCount;

float deltaMagnitudeDiff = avgPinchDistance - _pinchDistances[(_pinchFramesIndex - 1 + _pinchFramesCount) % _pinchFramesCount];

_distance = Mathf.Clamp(_distance + deltaMagnitudeDiff * _pinchZoomSensitivity, _distanceMin, _distanceMax);
}
else if (Input.GetMouseButton(0))
{
// For mouse input
_velocityX += _xSpeed * Input.GetAxis("Mouse X") * _distance * 0.02f;
_velocityY += _ySpeed * Input.GetAxis("Mouse Y") * 0.02f;
}

_rotationYAxis += _velocityX;
_rotationXAxis -= _velocityY;
_rotationXAxis = ClampAngle(_rotationXAxis, _yMinLimit, _yMaxLimit);
Quaternion fromRotation = Quaternion.Euler(transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y, 0);
Quaternion toRotation = Quaternion.Euler(_cameraAngle, _rotationYAxis, 0);
Quaternion rotation = toRotation;

// Zooming
_distance = Mathf.Clamp(_distance - Input.GetAxis("Mouse ScrollWheel") * _pinchZoomSensitivity, _distanceMin, _distanceMax);

Vector3 negDistance = new Vector3(0.0f, 0.0f, -_distance);
Vector3 position = rotation * negDistance + _target.position;
transform.rotation = rotation;
transform.position = position;
_velocityX = Mathf.Lerp(_velocityX, 0, Time.deltaTime * _smoothTime);
_velocityY = Mathf.Lerp(_velocityY, 0, Time.deltaTime * _smoothTime);
}
}


Подробнее здесь: https://stackoverflow.com/questions/782 ... id-problem
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Unity - проблема масштабирования/преобразования камеры в Android
    Anonymous » » в форуме Android
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Уровень масштабирования экспо-камеры не работает должным образом.
    Anonymous » » в форуме Android
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Как реализовать функцию масштабирования объектива камеры iphone?
    Anonymous » » в форуме IOS
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Артефакты текстуры при разных значениях масштабирования ортогональной камеры
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Артефакты текстуры при разных значениях масштабирования ортогональной камеры
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»