using UnityEngine;
using System.Collections;
public class DragAndDrop : MonoBehaviour
{
public LayerMask dragLayer;
public float rayDistanct = 50f;
private Ray ray;
private RaycastHit hit;
private GameObject dragObject;
private Vector3 movePosition = Vector3.zero;
private Vector3 offset = Vector3.zero;
private bool isDrag = false;
// Update is called once per frame
void Update()
{
if (Input.GetMouseButtonDown(0))
{
// Shoot Ray
ray = Camera.main.ScreenPointToRay(Input.mousePosition);
Debug.DrawRay(ray.origin, ray.direction * rayDistanct, Color.red);
// Get Object
if (Physics.Raycast(ray.origin, ray.direction * rayDistanct, out hit))
{
Debug.Log((1<<hit.collider.gameObject.layer) & dragLayer.value);
if (((1 << hit.collider.gameObject.layer) & dragLayer.value) != 0)
{
dragObject = hit.collider.gameObject;
}
}
if (dragObject != null)
{
// Find Move Position
movePosition = Camera.main.WorldToScreenPoint(dragObject.transform.position);
offset = dragObject.transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, movePosition.z));
}
}
// Clear Drag Object
if (Input.GetMouseButtonUp(0))
{
dragObject = null;
}
if (dragObject != null)
{
// Move / Drop object
Vector3 dropPosition = new Vector3(Input.mousePosition.x, Input.mousePosition.y, movePosition.z);
Vector3 moveObject = Camera.main.ScreenToWorldPoint(dropPosition) + offset;
dragObject.transform.position = moveObject;
}
}
}
ปล. มีอะไรแนะนำได้นะครับ
NO GAME NO DREAM !!!!