(unity3d 3D物体的拖动)
学习记录
public class Drop : MonoBehaviour
{
private bool isHave = false;
private GameObject cube;
private Vector3 screenPosition;
void Update()
{
//使用射线检测获得目标物体
if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
bool isHit = Physics.Raycast(ray.origin, ray.direction * 10, out hit);
if (isHit)
{
print(hit.collider.gameObject);
cube = hit.collider.gameObject;
isHave = true;
//物体世界坐标转换成屏幕坐标 并获得带有z的屏幕坐标点
screenPosition = Camera.main.WorldToScreenPoint(cube.transform.position);
}
}
//鼠标左键一直按下拖动过程中移动物体
if (Input.GetMouseButton(0))
{
if (isHave)
{
//当前鼠标屏幕坐标+加上物体屏幕坐标点的screenPosition.z
Vector3 currentScreenSpace =
new Vector3(Input.mousePosition.