Legacy Documentation: Version 2018.2 (Go to current version)
LanguageEnglish
  • C#

EventTrigger.OnDrag

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Submission failed

For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

public void OnDrag(EventSystems.PointerEventData eventData);

Parameters

eventDataCurrent event data.

Description

Called by the EventSystem every time the pointer is moved during dragging.

See EventTrigger for example usage.

//Attach this script to the GameObject you would like to detect dragging on
//Attach an Event Trigger component to the GameObject (Click the Add Component button and go to Event>Event Trigger)
//Make sure the Camera you are using has a Physics Raycaster (Click the Add Component button and go to Event>Physics Raycaster) so it can detect clicks on GameObjects.

using UnityEngine; using UnityEngine.EventSystems;

public class OnDragExample : MonoBehaviour { void Start() { EventTrigger trigger = GetComponent<EventTrigger>(); EventTrigger.Entry entry = new EventTrigger.Entry(); entry.eventID = EventTriggerType.Drag; entry.callback.AddListener((data) => { OnDragDelegate((PointerEventData)data); }); trigger.triggers.Add(entry); }

public void OnDragDelegate(PointerEventData data) { Debug.Log("Dragging."); } }

The next example allows you to move a GameObject by dragging.

using UnityEngine;
using UnityEngine.EventSystems;

public class OnDragExample : MonoBehaviour { void Start() { //Fetch the Event Trigger component from your GameObject EventTrigger trigger = GetComponent<EventTrigger>(); //Create a new entry for the Event Trigger EventTrigger.Entry entry = new EventTrigger.Entry(); //Add a Drag type event to the Event Trigger entry.eventID = EventTriggerType.Drag; //call the OnDragDelegate function when the Event System detects dragging entry.callback.AddListener((data) => { OnDragDelegate((PointerEventData)data); }); //Add the trigger entry trigger.triggers.Add(entry); }

public void OnDragDelegate(PointerEventData data) { //Create a ray going from the camera through the mouse position Ray ray = Camera.main.ScreenPointToRay(data.position); //Calculate the distance between the Camera and the GameObject, and go this distance along the ray Vector3 rayPoint = ray.GetPoint(Vector3.Distance(transform.position, Camera.main.transform.position)); //Move the GameObject when you drag it transform.position = rayPoint; } }

Did you find this page useful? Please give it a rating: