J'essaie de faire glisser des objets dans l'unité, je peux le faire, mais comment puis-je arrêter de déplacer un objet lorsqu'il est frappé à un autre objet dans l'écran. Je ne veux pas que les objets puissent traverser les uns les autres, j'ai utilisé rigidbody2d mais je ne vais pas travailler et pousser et faire tourner l'un l'autre.unity C# comment les objets s'arrêtent lorsque le collisionneur détecte?
Comment puis-je faire cela? Ceci est ma classe:
using UnityEngine;
using UnityEngine.EventSystems;
public class DragAndDrop : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
public static GameObject DraggedInstance;
Vector3 _startPosition;
Vector3 _offsetToMouse;
float _zDistanceToCamera;
#region Interface Implementations
public void OnBeginDrag (PointerEventData eventData)
{
DraggedInstance = gameObject;
_startPosition = transform.position;
_zDistanceToCamera = Mathf.Abs (_startPosition.z - Camera.main.transform.position.z);
_offsetToMouse = _startPosition - Camera.main.ScreenToWorldPoint (
new Vector3 (Input.mousePosition.x, Input.mousePosition.y, _zDistanceToCamera)
);
}
public void OnDrag (PointerEventData eventData)
{
if(Input.touchCount > 1)
return;
transform.position = Camera.main.ScreenToWorldPoint (
new Vector3 (Input.mousePosition.x, Input.mousePosition.y, _zDistanceToCamera)
) + _offsetToMouse;
}
public void OnEndDrag (PointerEventData eventData)
{
DraggedInstance = null;
_offsetToMouse = Vector3.zero;
}
#endregion
}