2014-02-13 6 views
0

나는 화합에 초보적이다. 나는 안드로이드 장치를위한 게임과 같은 케이크 메이커에서 일하고 있습니다. 캐비닛에서 테이블로 객체를 드래그하는 데 어려움을 겪고 있습니다. 테이블에 나는 그들을 병 속에 넣고 싶습니다. 이들은 많은 항목입니다. 그래서, 나는 그들을 단결 태그를 사용하여 분리하여 그것을 할 수 없습니다. 테이블에 끌어다 놓는 일반적인 방법은?unity3D에서 객체를 끌는 방법?

이 코드를 사용하고 있지만 작동하지 않습니다.

using UnityEngine; 
    using System.Collections; 

    public class DragObjects : MonoBehaviour { 

    Ray ray; 
    RaycastHit hit; 

    // Use this for initialization 
    void Start() 
    { 
    } 

    // Update is called once per frame 
    void Update() 
    { 

     if (Input.GetMouseButtonDown(0)) 
     { 
      ray = Camera.main.ScreenPointToRay (Input.mousePosition); 
      if (Physics.Raycast (ray, out hit)) 
      { 
       if (hit.collider.tag == "oil") 
       { 
        OnMouseDrag(); 
       } 
      } 
     } 

    } 


void OnMouseDrag() 

    { 

    Vector3 point = Camera.main.ScreenToWorldPoint(Input.mousePosition); 


    point.x = gameObject.transform.position.x; 

    gameObject.transform.position = point; 
    } 


} 
+0

어떤 부분이 작동하지 않습니다. 충돌을 감지합니까 (RayCast에 인쇄 해보십시오)? 또한 정확하게 기억할 수는 없지만 Input.mousePosition의 Z 값을 약간의 거리로 설정하지 않으면 포인트가 카메라 위치가됩니다 (카메라의 광선이 길이 1) –

+0

예, 충돌을 감지하고 있습니다. 그러나 끌기 위해 일하지 않는다. 나는 Debug.Log()와 Z-Value를 사용하여 코드를 검사하려고했다. 개체를 클릭하면 드래그되지 않습니다. 그러나 위치를 바꾼다. 어떤 때는 Z-Valve를 사용할 때 (point.x = gameObject.transform.position.x;) 그냥 사용합니다. 카메라 앞에서 시간을 둘 다 사용하면 (point.x = gameObject.transform.position.x; && point.z = gameObject.transform.position.z;). –

+0

미안하지만, 물체가 움직이는 것은 이해할 수 없지만 잘못되거나 전혀 움직이지 않는 것은 아닌가? –

답변

1

이 일의 유니티 방법은 각 사용자가 드래그하고자하는 객체에 당신이 첨부합니다 Draggable 동작을하는 것입니다. 3D와

Vector3 pos = Camera.main.ScreenToWorldPoint(Input.mousePosition); 
bool isOver = collider2D.OverlapPoint(pos); 

은 카메라에서 광선을 얻고 그 드래그와 교차하는 경우는 볼 수 colliders : 당신은 2D colliders를 사용하는 경우

은이 같은 것을 사용할 수 있습니다.

그런 다음 다른 충돌기를 사용하여 병이 배치되었을 때이를 감지 할 수 있습니다.

관련 문제