Разрешение игрокам перетаскивать объекты в Unity - PullRequest
0 голосов
/ 18 февраля 2019

В настоящее время я делаю игру в 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



}

1 Ответ

0 голосов
/ 18 февраля 2019

Даже если вы хотите сенсорный ввод для вашего мобильного устройства, вы можете использовать функцию OnMouseDrag.Просто прикрепите коллайдер к своему gameObject и упростите код до следующего:

using UnityEngine;

public class MoveBall : MonoBehaviour
{

    private void OnMouseDrag()
    {
        Vector2 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        transform.position = mousePos;
    }
}
...