我目前正在Unity中制作游戏,我希望玩家能够根据触摸位置在屏幕上拖动对象。我创建了一个脚本,为了做到这一点,从我知道它没有任何错误,应该允许我拖动脚本附加到屏幕上的对象。但是当我尝试执行代码时没有任何反应。触摸时,物体保持静止,完全不动。我甚至试图将Input.GetTouch(0).position切换到Input.mousePosition,看看问题与我的手机有关,但这也很有效。有谁知道我怎么能解决这个问题?
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
public class MoveBall : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
public static GameObject WhiteBall;
Vector3 startPosition;
#region IBeginDragHandler implementation
public void OnBeginDrag(PointerEventData eventData)
{
WhiteBall = gameObject;
startPosition = transform.position;
}
#endregion
#region IDragHandler implementation
public void OnDrag(PointerEventData eventData)
{
transform.position = Input.GetTouch(0).position;
}
#endregion
#region IEndDragHandler implementation
public void OnEndDrag(PointerEventData eventData)
{
WhiteBall = null;
transform.position = startPosition;
}
#endregion
}
即使您想要移动设备的触摸输入,也可以使用OnMouseDrag功能。只需将对撞机附加到gameObject并将代码简化为以下内容:
using UnityEngine;
public class MoveBall : MonoBehaviour
{
private void OnMouseDrag()
{
Vector2 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
transform.position = mousePos;
}
}