Positioning object on mouse position
Hello, I'm having some problems to make an object follow my mouse position while dragging it.
The current structure of objects I have for now is:
Background (Canvas) with: Screen Space - Camera, Scale With Screen Size, reference resolution : 1920x1080 --> Hand (Canvas with Horizontal LayoutGroup as Child of Background) ---> Photo (Image)
The Photo object has this script on it:
public class Draggable : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler {
private GameObject Hand;
private Transform BackgroundObject;
private void Start() {
Hand= GameObject.FindGameObjectWithTag("Hand");
BackgroundObject = Hand.transform.parent;
}
public void OnBeginDrag(PointerEventData eventData) {
Debug.Log("Begin Drag");
// Move Photo to Background object so we can move it around the screen
this.transform.SetParent(BackgroundObject);
}
public void OnDrag(PointerEventData eventData) {
Debug.Log("Dragging: " + eventData.position);
var rectTransform = GetComponent<RectTransform>();
// Set anchor and pivot to bottom-left to make things easier with the eventDataPosition.
rectTransform.anchorMin = new Vector2(0, 0);
rectTransform.anchorMax = new Vector2(0, 0);
rectTransform.pivot = new Vector2(0, 0);
rectTransform.anchoredPosition = eventData.position;
}
}
So, I'm using this config on my Background object so I can have the game scaled with all screen size, and it is doing its job great, the only problem is that as I could see is, the eventData inside the OnDragging() event is returning the mouse position in the game screen, but the Photo position still connected with the backgorund canvas reference 1920x1080.
Let's say it's running on 960x568, when I drag it to the last pixel on the right, eventData.X will return 1366, but if I set the Photo rectTransform.X to 960, it wont get positioned in the right, cuz the background reference size is 1920, so the Photo object will be in the center (1920 - 960 = 960) no in the right corner.
I've trying lot of things to get its position scaled somehow, but failed with everything, since I'm new to Unity and still learning how all those options works I'm not sure if I'm doing something really wrong, or if there is an easy way to make it work.
Thank you!
Your answer
Follow this Question
Related Questions
Can someone help me with this canvas warning? 0 Answers
RectTransform scale of my Canvas changed when I build on Android 1 Answer
Canvas scaler issues (not scaling properly) 1 Answer
Problems with Canvas and ui elements scaling at runtime 0 Answers
hey im trying to make a pause menu, it keeps poping up at the start and i have no idea how to fix. 1 Answer