내 장면의 여러 영역에 적용되는 스크립트가 있습니다. 장면에 붙이고 화면 위로 드래그하여 개별적인 구체를 움직일 수 있기를 바랍니다. 내 첫 번째 문제는 어떤 구체를 만져서 드래그해도 모든 구체가 함께 움직인다는 것입니다. (같은 조립식의 일부이지만 다른 구체의 자식은 아닙니다). 두 번째 문제는 화면의 아무 곳이나 터치하고 드래그하면 구체 중 하나를 터치 할 때 반응하는 대신 구체가 반응한다는 것입니다.하나의 객체를 터치하여 드래그하는 경우
Touch touch = Input.GetTouch(0);
for (int i = 0; i < Input.touchCount; i++)
{
if (touch.phase == TouchPhase.Began)
{
screenPoint = Camera.main.WorldToScreenPoint(gameObject.transform.position);
offset = gameObject.transform.position - Camera.main.ScreenToWorldPoint(new Vector3(touch.position.x, touch.position.y, screenPoint.z));
}
else if (touch.phase == TouchPhase.Moved)
{
Vector3 cursorPoint = new Vector3(touch.position.x, touch.position.y, screenPoint.z);
Vector3 cursorPosition = Camera.main.ScreenToWorldPoint(cursorPoint) + offset;
transform.position = cursorPosition;
}
}
나는 모든 구체의 문제가 함께 이동하는 대신 특정 영역의 같은 스크립트가 모든 분야에 적용하고, screenpoint
및 offest
이 gameObject.transform.position
에서 파생되고 있다는 사실에서 유래하는 느낌이 만졌어. 이 문제를 해결하기 위해 루프 위에 for
루프 위에 다음 코드를 넣으려고했지만이 방법이 올바르지 않을 수도 있습니다. 나는 이것에 초보적이다.
RaycastHit hit = new RaycastHit();
Physics.Raycast(touch.position, touch.position, out hit);
if (hit.collider == GameObject.FindGameObjectWithTag("Sphere0"))
{
selectedObject = GameObject.FindGameObjectWithTag("Sphere0");
}
나는 내 태그를 적절히 설정하고, 그 첫 번째 영역 (Sphere0) 근무 만약 내가 다른 구체에 대한 코드를 작성했을 수 있습니다. 하지만, 전혀 작동하지 않는 것 같습니다. 내 프로젝트는 ARCore 프로젝트이지만 장면의 이러한 측면에 대해 코드화해야하는 부분을 변경해야한다고 생각하지 않습니다.
모든 도움을 주시면 대단히 감사하겠습니다.
해피 뉴 이어에 감사드립니다. 그것은 그것이 작동해야하는 것처럼 들린다. 프리 플랍 내에 sphereMovementController 스크립트를 저장할 구체가 들어있는 빈 게임 객체를 만들었는데,이 객체는 여기에서 볼 수 있습니다 (너무 긴 주석입니다) : https://pastebin.com/V9REEN4p 놀랍게도, 이제 모든 구체를 터치하고 드래그하십시오. 내 코드에 문제가 있거나 설치가 기술되었다고 생각하십니까? – nerk
일부 Debug.Log를 코드의 다른 부분에 배치하고 도달하지 않는 부분을 확인하십시오. 어쩌면 레이 캐스트를 조정해야 할 수도 있습니다. 시도하지도 않았고 테스트도하지 않았습니다. – ryeMoss
무슨 소리 조언 : 나는 그렇게했고 내 레이 캐스트를 변경했다 :'Physics.Raycast (Camera.main.ScreenToWorldPoint (touch.position), Camera.main.transform.forward, out hit)'. 그런 다음 마지막 줄에서'transform.position = touchPosition; '을 설정한다는 것을 알았지 만 스크립트가 각 구체 객체에있을 때부터 였으므로 이제이를 selectedObject.transform.position = touchPosition;으로 변경했습니다. 구체가 만졌을 때 주위를 움직이지만 여전히 문제가 있습니다. – nerk