Я хотел бы повернуть свой объект AR на себя, то есть на одну ось, только одним пальцем. Поэтому я использую Lean Touch (бесплатная версия) и скрипт Lean Rotate Custom Axis. Этот процесс очень хорошо работает с двумя пальцами, но я не нахожу естественного движения. Я просто хочу, чтобы при движении пальца вправо объект поворачивался вправо, и наоборот.
Я уже обнаружил, что этот вопрос задавали здесь, и проверил предложенный ответ, но он не работает. Если кто-то уже сталкивался с этой проблемой или может иметь решение, заранее спасибо
void OnMouseDrag()
{
float rotationX = Input.GetAxis("Mouse X") * rotationSpeed * Mathf.Deg2Rad;
transform.Rotate(Vector3.down, -rotationX, Space.World);
}
Вы можете попытаться реализовать поддержку касания, используя Input.GetTouch
что-то вроде, например.
private Vector2 lastPos;
private void Update()
{
// Handle a single touch
if (Input.touchCount == 1)
{
var touch = Input.GetTouch(0);
switch(touch.phase)
{
case TouchPhase.Began:
// store the initial touch position
lastPos = touch.position;
break;
case TouchPhase.Moved:
// get the moved difference and convert it to an angle
// using the rotationSpeed as sensibility
var rotationX = (touch.position.x - lastPos.x) * rotationSpeed;
transform.Rotate(Vector3.up, -rotationX, Space.World);
lastPos = touch.position;
break;
}
}
}
или также, поскольку Unity также допускает GetMouseButtonDown(0)
для первого касания:
private void Update()
{
if (Input.GetMouseButtonDown(0))
{
lastPos = (Input.mousePosition);
}
else if (Input.GetMouseButton(0))
{
var rotationX = ((Input.mousePosition).x - lastPos.x) * rotationSpeed;
transform.Rotate(Vector3.up, -rotationX, Space.World);
lastPos = Input.mousePosition;
}
}
«Это не работает» звучит так, как будто оно даже не компилируется. Пожалуйста, уточните, что вы подразумеваете под «это не работает».