안녕하세요

이제 최적화 급한 불은 끈것 같으니 다른 기능을 구현해보았습니다

오늘 만들어 본 기능은 블록캐기입니다



24b0d121e09c28a8699fe8b115ef046c60f12b4d95


레이캐스트를 이용해 플레이어의 시선이 닿은 블록정보를 가져오고

해당 정보를 바탕으로 블록의 오리진을 구해줍니다

블록의 오리진을 구했다면 청크의 오리진과 맵데이터인덱스또한 구할 수 있습니다

이 기능은 블록을 캤을 때 실행될것이기에 해당 맵데이터의 블록정보를 공기로 바꿔줍니다



24b0d121e09c28a8699fe8b115ef0468e5a3e9bf


청크의 경계면에 있는 블록을 캐면 옆 청크의 메쉬로 같이 업데이트해주어야합니다

인덱스벡터를 선언해줍니다

만약 블록의 x좌표가 0이라면 해당 블록을 캤을때 왼쪽청크는 무조건 영향을 받겠죠?

왼쪽청크를 찾기위해 인덱스벡터가 필요하고 이는 청크오리진에 원하는 방향만큼 빼줘서 정해줄수있습니다

인덱스벡터를 찾았으면 해당 청크로가서 메쉬를 업데이트해줍니다

이때 청크가 있는지 없는지부터 판단해주기위해 함수를 하나 만들었습니다


24b0d121e09c28a8699fe8b115ef0468e3ace3bc


이 함수는 인덱스벡터가 음수거나 최대청크를 초과했으면 true아니면 false를 반환합니다


인덱스벡터가 맞는값이면 이제 메쉬를 재생성해줍니다


24b0d121e09c28a8699fe8b115ef046a7d69ebc8


전에 쓰던 CreateMesh함수를 약간 손봤습니다

이제 이 함수는 지혼자 메쉬만들고 할당하는게 아니라

메쉬만 생성하고 반환해줍니다



24b0d121e09c28a8699fe8b115ef046ec848cef5


setmesh함수를 만들었습니다

메쉬필터에 메쉬를 넣는 간단한 함수입니다


24b0d121e09c28a8699fe8b115ef04699231ffbe


처음에 청크를 생성하는 기능도 따로 함수를 팠습니다

레이어도 지정해줍니다 (7 = block)

그리고 청크 게임오브젝트 딕셔너리를 만들어 접근을 용이하게 했습니다

청크오리진을 키로 넣으면 해당하는 게임오브젝트를 반환합니다




24b0d121e09c28a8699fe8b115ef046c66f22948



이제 땅을 팔때마다 청크의 메쉬를 다시만들어서 할당해줄수있습니다










11


끼얏호우