仅用一根手指倾斜旋转自定义轴
Lean Rotate Custom Axis with only one finger
我想旋转我的 AR 对象本身,所以在一个轴上,只用一根手指。所以我使用 Lean Touch(免费版)和 Script Lean Rotate Custom Axis。
这个过程用两根手指效果很好,但我找不到自然的动作。我只希望当您向右滑动手指时,对象会向右转,反之亦然。
我已经发现有人问过这个问题 here,并测试了建议的答案,但它不起作用。如果有人已经遇到这个问题或者可以有解决方案,提前谢谢你
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;
}
}
我想旋转我的 AR 对象本身,所以在一个轴上,只用一根手指。所以我使用 Lean Touch(免费版)和 Script Lean Rotate Custom Axis。 这个过程用两根手指效果很好,但我找不到自然的动作。我只希望当您向右滑动手指时,对象会向右转,反之亦然。
我已经发现有人问过这个问题 here,并测试了建议的答案,但它不起作用。如果有人已经遇到这个问题或者可以有解决方案,提前谢谢你
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;
}
}