Есть ли способ остановить перемещение pos2 в pos1 после его перемещения? - PullRequest
0 голосов
/ 31 января 2019

Я работаю над обучающей игрой "перетащи и брось" и застрял в этом коде.Когда я пытаюсь от pos1 до pos2, это работает.Тем не менее, я в состоянии снова с pos2 до pos1, что я не хочу.Я попробовал некоторый код, но получил некоторые ошибки. Возможно ли решить эту проблему с помощью PointerEventData?

public class Manager : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
    Vector2 pos1;
    public GameObject pos2;

    void Start()
    {
        pos1 = transform.position;
    }

    public void OnBeginDrag(PointerEventData eventData)
    {
        debug.log(eventData)
    }
    public void OnDrag(PointerEventData eventData)
    {
        transform.position = Input.mousePosition;
    }
    public void OnEndDrag(PointerEventData eventData)
    {
        float distance = Vector3.Distance(transform.position, pos2.transform.position);
        if (distance < 50)
        {
            transform.position = pos2.transform.position;
            transform.localScale = pos2.transform.localScale;
        }
        else
        {
            transform.position = pos1;
        }
    }
}

1 Ответ

0 голосов
/ 31 января 2019

Здесь я переписал ваш код, включив в него bool, ограничивающий, когда объект может и не может быть перемещен.

using UnityEngine;
using UnityEngine.EventSystems;

public class Manager : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
Vector2 pos1;
public GameObject pos2;
private bool canMove;

void Start()
{
    pos1 = transform.position;
    canMove = true;
}

public void OnBeginDrag(PointerEventData eventData)
{
    Debug.Log(eventData);
}

public void OnDrag(PointerEventData eventData)
{
    if (canMove)
        transform.position = Input.mousePosition;

}

public void OnEndDrag(PointerEventData eventData)
{
    float distance = Vector3.Distance(transform.position, pos2.transform.position);
    if (distance < 50)
    {

        transform.position = pos2.transform.position;
        transform.localScale = pos2.transform.localScale;
        canMove = false;
    }
    else
    {
        transform.position = pos1;
    }
}

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...