<마우스 좌표에 오브젝트 붙이기>
IEnumerator OnMouseDown()
{
Vector3 scrSpace = Camera.main.WorldToScreenPoint(transform.position);//객체의 스크린좌표를 구하고
Vector3 offset = transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, scrSpace.z));
while (Input.GetMouseButton(0))
{
Vector3 curScreenSpace = new Vector3(Input.mousePosition.x, Input.mousePosition.y, scrSpace.z);//현재 스크린좌표를 구함
Vector3 curPosition = Camera.main.ScreenToWorldPoint(curScreenSpace) + offset; //마우스좌표를 월드좌표로 +
transform.position = curPosition;
yield return null;
}
}
픽킹
RaycastHit m_Hit;
if ( Input.GetMouseButtonDown(0) == true ) //마우스를 눌르면
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); //현재 마우스클릭한 위치
if ( Physics.Raycast(ray,out m_Hit,100)) // 피킹이 되면 m_Hit에 피킹된 오브젝트정보가 달려온다.
{
Debug.Log(m_Hit.transform.tag);
}
}
//////////////////////////////////////////////////////////////////////////////
using UnityEngine;
using System.Collections;
public class picking : MonoBehaviour
{
protected Ray ray;
protected RaycastHit hit;
// Use this for initialization
void Start()
{
}
// Update is called once per frame
void Update()
{
if (Input.GetMouseButton(0) == true)
{
ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit))
{
Vector3 offset;
Vector3 scrSpace = Camera.main.WorldToScreenPoint(hit.transform.position);
offset = hit.transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, scrSpace.z));
Vector3 curScreenSpace = new Vector3(Input.mousePosition.x, Input.mousePosition.y, scrSpace.z);
Vector3 curPosition = Camera.main.ScreenToWorldPoint(curScreenSpace); // +offset;
hit.transform.position = curPosition;
Debug.Log(curScreenSpace.x);
Debug.Log(curPosition.x);
}
}
}
}
'Game > Unity' 카테고리의 다른 글
[iOS / Android] Unity에서 admob을 구현하는 방법 (0) | 2016.08.12 |
---|---|
[Unity] Gang Of Four (GOF) (0) | 2016.01.06 |
Unity가 직면한 기술적 문제들 (0) | 2015.11.02 |
[unity3d]게임 최적화 기법 (0) | 2015.10.21 |
Unity에서 화면 외의 위치를 검색하는 방법 (0) | 2015.09.09 |