Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using UnityEngine.EventSystems;
- using UnityEngine.UI;
- [RequireComponent(typeof(Image))]
- public class UIBarControl : MonoBehaviour, IDragHandler
- {
- private float newLocalY;
- [SerializeField] private Canvas canvas;
- private Vector2 canvasPosition;
- [SerializeField] private RectTransform parentRectContainer;
- private float minY;
- private float maxY;
- public void OnDrag(PointerEventData eventData)
- {
- float oldPositionX = transform.position.x;
- MoveToCursorPosition();
- ClampLocalPosition(oldPositionX);
- }
- private void MoveToCursorPosition()
- {
- RectTransformUtility.ScreenPointToLocalPointInRectangle(canvas.transform as RectTransform,
- Input.mousePosition, canvas.worldCamera, out canvasPosition);
- transform.position = canvas.transform.TransformPoint(canvasPosition);
- }
- private void ClampLocalPosition(float oldPositionX)
- {
- newLocalY = transform.position.y;
- minY = parentRectContainer.transform.position.y + parentRectContainer.offsetMin.y;
- maxY = parentRectContainer.transform.position.y + parentRectContainer.offsetMax.y;
- newLocalY = Mathf.Clamp(newLocalY, minY, maxY);
- transform.position = new Vector3(oldPositionX, newLocalY, transform.localPosition.z);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement