【问题标题】:How to drag unity object just up-down and left-right .?如何上下左右拖动统一对象。?
【发布时间】:2018-10-28 13:41:01
【问题描述】:

我有一个统一的图表,我想上下左右拖动它以查看即将到来的坐标。

我编写了这段代码来拖动图形对象,但它无限制地拖动它。我只想让它上下左右移动。

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

    }

}

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    ifOffsetX > OffsetY,不要使用Input.mousePosition.y

    反之亦然。

    弄清楚当OffsetX == OffsetY 留给读者作为练习时该怎么做。

    【讨论】:

      【解决方案2】:

      如果你想让它上下波动,那你为什么要使用 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);
          }
      }
      

      【讨论】:

      • 对不起,我的错,我已经编辑了我的问题。我只想要上下和左右。
      • 哦,我不明白你的意思是“无限制地到处拖动”你的意思是z轴值搞砸了吗?
      • 没有z轴,它是一个二维平面。我想在 X 轴上上下拖动对象,也在 Y 轴上左右拖动。其他任何地方都没有。
      • 哦,是的,但是您的代码会将其从左到右向下移动。抱歉,如果我遗漏了什么。
      • 它也向东北、西北方向发展。我只希望它通过 X 和 Y 轴上下左右。
      猜你喜欢
      • 1970-01-01
      • 2019-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-02
      • 1970-01-01
      相关资源
      最近更新 更多