Не понимаю о чем вы? Берем 2 куба, накидываем rigid body и такой вот скрипт:
Код
using UnityEngine;
using System.Collections;
public class DragAnObject : MonoBehaviour
{
private Vector3 screenPoint;
private Vector3 offset;
private Vector3 curScreenPoint;
private Vector3 curPosition;
private Rigidbody myRigidbody;
public bool freezeRotationOnDrag = true;
private bool freezeRotationSetting;
private bool gravitySetting;
private float Rotate = 0.0f;
// Use this for initialization
void Start ()
{
myRigidbody = rigidbody;
}
// Update is called once per frame
void Update ()
{
}
void OnMouseDown()
{
screenPoint = Camera.main.WorldToScreenPoint(transform.position);
offset = transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z));
gravitySetting = myRigidbody.useGravity;
freezeRotationSetting = myRigidbody.freezeRotation;
myRigidbody.useGravity = false;
myRigidbody.freezeRotation = freezeRotationOnDrag;
}
void OnMouseDrag()
{
curScreenPoint = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z);
curPosition = Camera.main.ScreenToWorldPoint(curScreenPoint) + offset;
transform.position = curPosition;
}
void OnMouseUp ()
{
myRigidbody.useGravity = gravitySetting;
rigidbody.constraints = RigidbodyConstraints.FreezeRotationX | RigidbodyConstraints.FreezeRotationY | RigidbodyConstraints.FreezePositionZ ;
}
}
Как избежать прохождения насквозь?