在 Unity 2D 中拖动图像时,即使鼠标大幅度移动,也只能进行最小程度的移动

问题描述 投票:0回答:1

我编写了以下代码来在滚动视图上移动 2D 图像。它确实有效,但它们的移动幅度很小。如果我用鼠标在整个屏幕上拖动,图像只会移动一点点。这是为什么?

using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

public class DraggableObject : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
{
    private bool isDragging = false;
    private Vector3 offset;
    private SceneController sceneController;
    [SerializeField] GameObject ObjectToDrag;
    [SerializeField] private BoxCollider boxCollider;
    [SerializeField] private Image image;

    void Start()
    {
        sceneController = GameObject.Find("Controller").GetComponent<SceneController>();
    }

    void Update()
    {
        if (isDragging)
        {
            ObjectToDrag.transform.position = Camera.main.ScreenToWorldPoint(Input.mousePosition) + offset;
        }
    }

    public void SetSizeOfBoxCollider()
    {
        RectTransform rectTransform = image.rectTransform;
        float width = rectTransform.rect.width;
        float height = rectTransform.rect.height;
        Vector3 sizeAsVector3 = new Vector3(width, height, 0);

        boxCollider.size = sizeAsVector3;

    }

    public void OnPointerDown(PointerEventData eventData)
    {
        isDragging = true;
        offset = ObjectToDrag.transform.position - Camera.main.ScreenToWorldPoint(Input.mousePosition);
        sceneController.DeactivateScrollView();
    }

    public void OnPointerUp(PointerEventData eventData)
    {
        isDragging = false;
        sceneController.ActivateScrollView();
    }
}
unity-game-engine drag
1个回答
0
投票

我已经解决了这个问题。我只是不得不

Camera.main.ScreenToWorldPoint(Input.mousePosition)

替换为

Input.mousePosition
© www.soinside.com 2019 - 2024. All rights reserved.