Как перетащить объект единства просто вверх-вниз и влево-вправо.? - PullRequest
0 голосов
/ 28 октября 2018

У меня есть график в единстве, я хочу перетащить его вверх-вниз и влево-вправо, чтобы увидеть предстоящие координаты.

Я написал этот код для перетаскивания графического объекта, но он перетаскивает его без ограничений.Я просто хочу, чтобы он шел вверх-вниз и влево-вправо.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DragGraph : MonoBehaviour {

    float OffsetX;
    float OffsetY;

    public void BeginDrag(){
        OffsetX = transform.position.x - Input.mousePosition.x;
        OffsetY = transform.position.y - Input.mousePosition.y;
    }

    public void OnDrag(){

        transform.position = new Vector3 (OffsetX + Input.mousePosition.x, OffsetY + Input.mousePosition.y);

    }

}

Ответы [ 2 ]

0 голосов
/ 28 октября 2018

if OffsetX > OffsetY, не используйте Input.mousePosition.y

И наоборот.

Выясните, что делать, когда OffsetX == OffsetY оставлено в качестве упражнения для читателя.

0 голосов
/ 28 октября 2018

Если вы хотите, чтобы он шел вверх и вниз, тогда почему вы используете значение x?Вы можете просто оставить его равным 0, и только значение y изменится и заставит его подниматься и опускаться.

Редактировать Не уверен, что это идеально, но похоже на движение вверх, вниз, влево и вправо. Я попробовал, и он идет в одном направлении за раз.

 Vector2 offset;
Vector2 startPos = Vector2.zero;

public void OnBeginDrag(PointerEventData eventData)
{
    startPos = eventData.position;
    offset.x = transform.position.x - Input.mousePosition.x;
    offset.y = transform.position.y - Input.mousePosition.y;
}

public void OnDrag(PointerEventData eventData)
{
    Vector2 direction = eventData.position - startPos;
    direction.Normalize();

    if ((direction.x>0 || direction.x<0) && direction.y>-0.5f && direction.y < 0.5f)
    {
        transform.position = new Vector3(offset.x+ Input.mousePosition.x, transform.position.y);
    }
    if ((direction.y > 0 || direction.y<0) && direction.x > -0.5f && direction.x < 0.5f)
    {
        transform.position = new Vector3( transform.position.x, offset.y + Input.mousePosition.y);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...