유닛에서 임의의 대상 드래그

1996 단어
쑨광둥 2015.8.16
목적: 우리는 간단하게 마우스 위치를 통해 목표 대상을 얻을 수 있다. 만약에 강체 구성 요소를 사용하지 않았다면
Step - 1: 3D 항목에서 장면을 설정합니다.빈 대상의 이름은 다음과 같다. DragAndDrop, 그리고 sphere, cube 등 다른 게임 대상을 만드는 것이다. - 다음과 같다.
Step - 2: C# 스크립트의 이름은 "GameobjectDragAndDrop"입니다. 
Step - 3: 추가 방법:
GameObject ReturnClickedObject(out RaycastHit hit)
    {
        GameObject target = null;
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        if (Physics.Raycast(ray.origin, ray.direction * 10, out hit))
        {
            target = hit.collider.gameObject;
}
        return target;
    }

Step - 4: Update 메서드에서
void Update()
    {
 
        if (Input.GetMouseButtonDown(0))
        {
            RaycastHit hitInfo;
            target = ReturnClickedObject(out hitInfo);
            if (target != null)
            {
                isMouseDrag = true;
                Debug.Log("target position :" + target.transform.position);
                //Convert world position to screen position.
                screenPosition = Camera.main.WorldToScreenPoint(target.transform.position);
offset = target.transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPosition.z));
            }
        }
 
        if (Input.GetMouseButtonUp(0))
        {
            isMouseDrag = false;
        }
 
        if (isMouseDrag)
        {
            //track mouse position.
            Vector3 currentScreenSpace = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPosition.z);
 
            //convert screen position to world position with offset changes.
            Vector3 currentPosition = Camera.main.ScreenToWorldPoint(currentScreenSpace) + offset;
 
            //It will update target gameobject's current postion.
            target.transform.position = currentPosition;
        }
 
    }

Step - 6: 프로그램을 실행하고 객체를 드래그하면 OK...

좋은 웹페이지 즐겨찾기