是否有一种方法可以在手指按住屏幕的同时进行某些操作。
我想做的是在手指仍在屏幕上的同时,将手指放在屏幕上并使对象旋转(仅Y轴)。抬起手指时,旋转应该停止。
这是我的代码:
using UnityEngine;
public class RotateObs : MonoBehaviour
{
public float rotateSpeed;
private void Update()
{
if(Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0);
if (touch.phase == TouchPhase.Began)
{
transform.Rotate(Vector3.up * rotateSpeed * Time.deltaTime);
}
}
}
}
我希望当手指(在PC上也可以使用鼠标)在屏幕上时,对象应该旋转。
发生的是-它仅旋转1帧,然后停止。它就像单击一样进行注册,无论我的手指是否仍在屏幕上都没有关系。
我很确定自己做错了,只是看不到哪里。
答案 0 :(得分:0)
如果要检测用户是否按住鼠标键,则应使用
if (Input.GetMouseButton(0))
{
transform.Rotate (Vector3.up * rotateSpeed * Time.deltaTime);
}
实际上,这一行代码甚至在移动设备上也可以使用,但是如果您想使用Touches,
if (Input.touchCount > 0)
{
Touch first = Input.GetTouch (0);
if (first.phase == TouchPhase.Stationary)
{
transform.Rotate (Vector3.up * rotateSpeed * Time.deltaTime);
}
}
答案 1 :(得分:0)
我正面临着类似的问题。如果用户按住屏幕,我想将播放器绕一点旋转。触摸向右可将播放器顺时针移动,反之亦然。 这是代码:
void Update()
{
if(Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0);
Vector3 touchPos = Camera.main.ScreenToWorldPoint(touch.position);
touchPos.z = 0f;
if (touch.phase == TouchPhase.Stationary)
{
if (touchPos.x > 0)
movement = 1f;
else if (touchPos.x < 0)
movement = -1f;
}
if (touch.phase == TouchPhase.Ended)
{
movement = 0f;
}
}
}
private void FixedUpdate()
{
transform.RotateAround(centre, Vector3.forward, movement * Time.fixedDeltaTime * -moveSpeed);
}