반응형
Scene이동 이동 후 Player가 바닥에 붙어있지 않고 떠다니는 오류가 생겼다.
Player를 다시 ground에 붙여 놓자
해결 방법
01 ground 설정
플레이어를 붙여 놓고 싶은 게임오브젝트에 ground Layer를 설정 한다.
02 Raycast이용해서 ground와 충돌한 지점으로 Player의 y좌표로 변경
void FindGround()
{
GameObject player = GameObject.Find("Player");
playerTransform = player.transform;
RaycastHit hit;
if (Physics.Raycast(playerTransform.position, Vector3.down, out hit, 10f, LayerMask.GetMask("ground")))
{
playerTransform.position = new Vector3(playerTransform.position.x, hit.point.y, playerTransform.position.z);
}
}
Physics.Raycast(playerTransform.position, Vector3.down, out hit, 10f, LayerMask.GetMask("ground"))
playerTransform.position : Raycast 발사 시작 위치
Vector3.down : Raycast 방향
out hit : 충돌 정보
10f : Raycast 최대 거리
LayerMask.GetMask("ground") : 충돌을 감지할 레이어 지정
플레이어의 위치를 Raycast와 충돌한 지점의 y좌표로 옮기기
playerTransform.position = new Vector3(playerTransform.position.x, hit.point.y, playerTransform.position.z);
반응형
'유니티 공부 > Unity' 카테고리의 다른 글
Unity - SerializationException: Type 'UnityEngine.MonoBehaviour' in Assembly 'UnityEngine.CoreModule 에러 고치는 법 (0) | 2023.08.02 |
---|---|
Unity - NPC클릭하면 플레이어 쳐다보게 하는 법 (0) | 2023.07.21 |
Unity - 다른 객체들을 기반으로 특정 버튼의 기능을 설정하는 방법 (0) | 2023.07.18 |
Unity - panel이 켜져있는데 뒤에 GameObject가 클릭되는 경우 (0) | 2023.07.17 |
Unity - 구매, 판매 기능 구현해보기 (0) | 2023.07.17 |
댓글