C# 如何上下左右拖动unity对象。?

C# 如何上下左右拖动unity对象。?,c#,unity3d,C#,Unity3d,我在unity中有一个图形,我想上下左右拖动它来查看即将出现的坐标 我写这段代码是为了拖动graph对象,但它无限制地拖动它。我只想让它上下左右移动 using System.Collections; using System.Collections.Generic; using UnityEngine; public class DragGraph : MonoBehaviour { float OffsetX; float OffsetY; public voi

我在unity中有一个图形,我想上下左右拖动它来查看即将出现的坐标

我写这段代码是为了拖动graph对象,但它无限制地拖动它。我只想让它上下左右移动

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);

    }

}

如果你想让它上下移动,为什么要用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);
    }
}
Vector2偏移量;
Vector2 startPos=Vector2.0;
公共void OnBeginDrag(PointerEventData事件数据)
{
startPos=eventData.position;
offset.x=transform.position.x-Input.mousePosition.x;
offset.y=transform.position.y-Input.mousePosition.y;
}
public void OnDrag(PointerEventData事件数据)
{
Vector2 direction=eventData.position-startPos;
方向。规范化();
如果((方向x>0 | |方向x-0.5f和方向y<0.5f)
{
transform.position=newvector3(offset.x+Input.mousePosition.x,transform.position.y);
}
如果((方向y>0 | |方向y-0.5f和方向x<0.5f)
{
transform.position=新矢量3(transform.position.x,offset.y+Input.mousePosition.y);
}
}
如果
OffsetX>OffsetY
,不要使用
Input.mousePosition.y
反之亦然


OffsetX==OffsetY
留给读者做练习时,我想知道该怎么做。

对不起,我的错,我已经编辑了我的问题。我只想要上下和左右。哦,我不明白你所说的“无限制地拖来拖去”是什么意思你的意思是z轴的值弄乱了吗?不,z轴,它是一个2d平面。我想在X轴上下拖动对象,在Y轴上也要左右拖动对象。不是在其他任何地方。哦,是的,但是你的代码会将其左右移动。如果我遗漏了什么,很抱歉。它也在东北方向,西北方向。我只想让它穿过X轴和Y轴向上向下和向右向左。