2013-03-14 1 views
0

그리드를 마우스로 클릭/터치하여 오브젝트를 움직일 수 있습니까? 예를 들어 GUITexture를 사용하여 게임 오브젝트 채우기 오브젝트를 움직일 수 있습니까?Unity3D : 마우스와 체크로 GameObject 이동하기

Camera.main.ScreenToWorldPoint를 사용하는 경우 contains를 확인할 수 없습니다. 현재 확인하려면 코드가 잘 작동을 포함하지만, 마우스 :(

링크 이미지와 함께 움직이지 게임 오브젝트 : http://i.imgur.com/cHoS0YV.png

내 코드는 다음과 같습니다!

void OnMouseDown() 
    { 
     Vector2 mousePos = new Vector2(Input.mousePosition.x, Screen.height - Input.mousePosition.y); 
     transform.position = mousePos; 
     Debug.Log("OnMouseDown: transform.position: " + transform.position); 
    } 
    void OnMouseDrag() 
    { 
     Vector2 mousePos = new Vector2(Input.mousePosition.x, Screen.height - Input.mousePosition.y); 

     transform.position = mousePos; 
     Debug.Log("transform.position: " + transform.position); 

     foreach (var x in GameBoard.Instance.listTileInGrid) 
     { 
      if (x.RectTile.Contains(mousePos)) 
      { 
       Debug.Log("change color"); 
       x.ColorId = 1; 
      } 
     } 
    } 

사전에 감사

업데이 트를 :

변경 : transform.position = mousePos; to transform.guiTexture.transform.position = C amera.main.ScreenToViewportPoint (Input.mousePosition);

+1

같은에 게임 안 출자하여 문서를 찾을 수있는 단결 태그가 마이크로 소프트 유니티 예약되어 있습니다. 오용하지 마십시오. –

+0

답장을 보내 주셔서 감사합니다. 여기에서 문제를 해결했습니다 : transform.guiTexture.transform.position = Camera.main.ScreenToViewportPoint (Input.mousePosition); http://answers.unity3d.com/questions/416536/moving-gameobjects-with-mouse-and-check-contains.html – 691138

+0

대답을 작성한 다음 답변으로 표시하십시오.이 질문은 남아 있지 않습니다. 보답 없는. – Joetjah

답변

0

이것은 매우 간단합니다. 이를 위해 Vector3.Lerp 함수를 사용할 수 있습니다. 마우스 클릭 위치 또는 터치 위치를 얻으려면 레이 캐스팅을 사용하십시오. 그런 다음 lerp 함수에서 처음과 마지막 위치를 사용하십시오. 초기 위치는 게임 객체가 현재있는 위치이고 마지막 위치는 클릭/터치 위치입니다. 현재

Move to Touch/Click Position - The Game Contriver