오늘은 어제 겪은 문제를 해결했다. 생각보다 간단히 원인을 파악했고(구글링) 해결도 빠르게했다.
미리보기 오브젝트에도 박스 콜라이더를 두었었다.
Ray를 처음 쏠 때는 목표지점에 도달해서 미리보기 오브젝트를 위치시키고
그 뒤에 쏠 떄는 오브젝트의 박스 콜라이더에 부딪히고 그 부딪힌 지점에 오브젝트를 옮긴다.
이런 식으로 계속 Ray의 원점으로 가까워지는 문제였다.
일단은 박스 콜라이더를 비활성화 시켜주니 문제는 해결됐다.
그런데 박스 콜라이더는 건설 가능 여부를 판단하는 것에 필수 요소라서 수정이 좀 필요했다.
private void PreviewPositionUpdate()
{
if(Physics.Raycast(player.position, player.forward, out hitInfo ,range, layerMask))
{
if (hitInfo.transform != null)
{
Vector3 point = hitInfo.point;
point.
go_Preview.transform.position = point;
}
}
}
Physics.Raycast()
의 인자로 레이어 마스크를 주고 있는데, 해당 레이어 마스크의 오브젝트에 레이가 쏘였을 때에만 건축이 가능하도록 해준다.
Terrain
레이어 마스크를 추가해주고
위 코드의 layerMask
를 Terrain
으로 설정해준다.
그러면 미리보기 오브젝트의 박스 콜라이더를 끄지 않아도 정상 작동한다.