시작하기 앞서.



그림자 문제에 대해 유니티에 버그를 제보했습니다. (http://fogbugz.unity3d.com/default.asp?686520_7lhbntgd3vi4d3el)


그리고 며칠 뒤 Issue Tracker에 올라왔습니다. (http://issuetracker.unity3d.com/issues/shadow-moves-in-relation-to-the-object-that-casts-it-when-using-a-custom-projection-matrix)

빨리 고쳐지면 저도 좋죠.


역시 이런 버그를 제보할 때는, 버그가 발생하는 최소한의 조건만 제작하는 게 나은 것 같습니다.

다른 분도 이걸 예전에 제보했고, 그 분은 유료 사용자라 우선순위도 높을 텐데 Issue Tracker에 안 올라온 걸 보면요.



이번 주는 작업한 시간이 적었습니다.

그래서 바닥은 일단 추가는 했다, 라고 보셔도 될 겁니다.



바닥 중 대다수는 벽에 붙어있을 거라서, 벽을 만들고나서도 벽의 좌표들을 보관하도록 해야했습니다.




변수를 잘못 써서 벽 좌표가 제대로 저장되지 않아 생긴 문제.




벽 좌표 저장 코드를 잡고, 재질을 입혀보았습니다.

UV 만드는 것은 꽤 쉽습니다.


물론 저렇게 바닥의 삼각형들을 잡으면, 안이 파인 형태의 바닥을 만들 때 문제가 생기겠지만 그건 다음에 해결하죠.




그 다음에는 블록 편집을 위해 준비하는 겁니다.


일단 클릭을 받아주는 역할을 할 Quad를 또 만들어서, 층수를 조작할 때마다 따라다니게 합니다.

그러니 원래 바닥의 텍스쳐가 거슬려서 단색으로 바꿨죠.

(원래 바닥을 Terrain으로 바꿔도 될 것 같은데)


그리고 카메라도 층수에 따라 움직이고, 층 내에서도 높이를 조절할 수 있습니다.

이걸 하면서 발견한 높이 관련 버그도 잡았습니다.



그런데 만들고 보니, 편집할 때는 Floor 단위가 아니라 Level 단위로 해야하더군요.


즉 완성된 블록을 보는 것과 블록을 편집하는 것을 완전히 다른 두 모드로 둬야한다는 거죠.

문제는 지금까지 만든 코드들을 또 개편해야하는가, 하는 점입니다.



다음 주에는 그래서,

블록 저장과 불러오기 포맷에 대한 컨셉 증명.

컨셉이 기본적으로 Adobe Flash에 맞춰서 짜여있었기에, 아직 블록 저장에는 PNG를 사용할 생각이었습니다.

(예전에는 그래도 파일을 보면 어떤 맵일 지 감이 잡혔지만, 이제는 벡터 데이터를 저장해서 그게 안 될 겁니다)


문제는 Unity의 Color는 0-1까지의 float를 사용한다는 점.

PNG의 무손실성을 이용해서 16진법으로 변환된 데이터를 저장하는 건데,

float는 데이터 훼손 문제가 있을것같다는 겁니다.

Color32는 그래도 0-255까지 byte를 쓴다니, 한번 살펴봐야겠습니다.



그리고 시간이 남는다면,

화면을 클릭했을 때 어디를 클릭했는지 감지하는 코드.

(위의 사진5에 적힌 <Clicked> 부분에, 클릭한 오브젝트 이름과, 그에 따라 환산되는 좌표를 표시하게 할 생각)



P.S. 원래 바닥을 Floor라고 불렀는데, 그러니 층수의 Floor랑 용어가 겹치는 문제가 생겼습니다.

그래서 이제부터 층 안에 있는 바닥을 Slab라고 부를 겁니다.











Posted by Metnias
,