【问题标题】:Allowing players to drag objects in Unity允许玩家在 Unity 中拖动对象
【发布时间】:2023-04-01 17:28:01
【问题描述】:

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

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

    using UnityEngine;
    
    public class MoveBall : MonoBehaviour
    {
    
        private void OnMouseDrag()
        {
            Vector2 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            transform.position = mousePos;
        }
    }
    

    【讨论】:

    • 您好,感谢您的回复。是的,脚本已附加到我的游戏对象上。我用你显示的代码替换了代码,它仍然不动
    • @MauriceBekambo 我没有问您的游戏对象是否附加了脚本。我问您的游戏对象是否附加了对撞机。
    • 啊,是的,我刚刚连接了对撞机,现在它可以工作了。谢谢大佬
    • 但是当我在您的代码中将 input.mousePosition 替换为 Input.GetTouch(0).position 时只有一个问题,它不再起作用。你知道为什么会这样吗?
    • @MauriceBekambo 如果您将 Input.mousePosition 替换为 Input.GetTouch,它还能正常工作吗?在你的手机上试试。也许 Unity 会在内部交换方法。
    猜你喜欢
    • 1970-01-01
    • 2015-11-20
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多