본문 바로가기
유니티 공부/Unity

Unity - Scene이동 후 Player가 떠 있는 경우, 바닥에 있지 않는 경우

by 코딩하는 돼징 2023. 7. 18.
반응형

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);

 

 

 

 

반응형

댓글