C# 如何上下左右拖动unity对象。?
我在unity中有一个图形,我想上下左右拖动它来查看即将出现的坐标 我写这段代码是为了拖动graph对象,但它无限制地拖动它。我只想让它上下左右移动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
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轴向上向下和向右向左。