允许玩家在Unity中拖动对象

问题描述 投票:0回答:1

我目前正在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



}
unity3d vector drag-and-drop game-engine drag
1个回答
2
投票

即使您想要移动设备的触摸输入,也可以使用OnMouseDrag功能。只需将对撞机附加到gameObject并将代码简化为以下内容:

using UnityEngine;

public class MoveBall : MonoBehaviour
{

    private void OnMouseDrag()
    {
        Vector2 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        transform.position = mousePos;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.