我编写了以下代码来在滚动视图上移动 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();
}
}
我已经解决了这个问题。我只是不得不
Camera.main.ScreenToWorldPoint(Input.mousePosition)
替换为
Input.mousePosition