-
으어어어
강의 듣는데 계속 한 개씩 빼먹거나 잘못누르거나 그래서 생각보다 엄청 늦어져서 다 못끝냈습니다.
제대로만 했으면 정말 다 끝내는건데..
근데 마지막까지도 무슨 문제가 자꾸 생겨나네요.. 더 만들기 무섭게 ㄷㄷ
계속 2D에 대해서 만들었다면 이번 것은 3D 입니다.
만들면서 보니깐 요즘 핫한 그 게임 생각나더라구요.. 그건 3인칭이긴한데.. ㅎ
완강을 한 것도 아니고 지금 완벽히 이해했어! 도 아니기때문에 강의를 듣다가 이건 개인 프로젝트할 때나 나중에 게임만들 때 쓰면 좋을 것 같은 걸 골라서 적어보도록 하겠습니다.
1. UI Image 크기 조절
Fill Method와 Fill Origin을 잘 설정해준다면 왼쪽에서 오른쪽으로 HP가 채워지거나 반대로 깍이거나를 쉽게 만들 수 있습니다.
단, Fill Amount의 최대가 1이므로 현재 체력 / 최대 체력 을 해줘서 설정해줘야합니다.
2. GetComponent +@
component를 가져오기 위해서는 GetComponent를 이용해줍니다. 더 나아가서 TryGetComponent<>(out )을 사용해준다면 component가 있다면 out에 저장해주면서 true를 반환하고 없다면 false를 반환합니다.
Parse 와 TryParse 랑 비슷하다고 느껴집니다.
3. Light
3D에만 있는 기능입니다. 빛이 어느 방향으로 빛추면 어디는 좀 더 어둡고 어디는 좀 더 밝고 가 가능하기도 하며, 빛의 색을 변화시킬 수 있기 때문에 더 어둡게, 더 밝게도 가능하게 해줍니다.
원을 1/4로 나눠서 가장 위에는 태양이 가장 높게 올라가는 낮이고 가장 아래는 태양이 가장 아래에 있는 자정이라고 생각하면 좋습니다. 따라서 달은 그 반대로 태양이 가장 높은 위치에서는 가장 낮은 위치에 있고 태양이 가장 낮은 곳에 있으면 달이 가장 높은.. 그렇다고 생각하면..
0.25일 때 태양이 가장 높은 위치이고 0.75일 때 달이 가장 높은 위치입니다.
그것을 이용해서 해와 달을 만들고 둘이 서로 반대편에서 시계 방향으로 돈다고 보면 됩니다.
transform.eulerAngles = (time - (lightSource == sun ? 0.25f : 0.75f)) * noon * 4.0f; //noon은 정오
4. 아이템 보여주기
가장 신기했던 부분입니다. 바라보는 아이템이 있다면 UI로 아이템의 정보를 뜨게 해주는 방법입니다.
Ray를 사용해서 해주는 방법인데 생각해보면 Ray에 대해 적은 적은 없는 것 같습니다.
Ray에 대해서 깔끔하게 아는 것도 아니라서 딱히 적은 것은 없는 것 같은데..
쉽게 생각하면 눈에서 직선의 광선이 나와서 광선에서 부딪히는 것들의 정보를 가져오는? 이라고만 기억하고 있습니다.
그래서 Ray는 보통 눈이 되어주는 3D에서 카메라에 많이 하는 편이고 2D에서는 마우스의 위치라고 볼 수 있습니다.
Raycast는 빔을 쏘는 것이고
RaycastHit은 빔을 쏘는데 맞는 오브젝트가 있다면 가져오는 것 입니다.
Ray ray = camera.ScreenPointToRay(new Vector3(Screen.width / 2, Screen.height / 2)); RaycastHit hit; if (Physics.Raycast(ray, out hit, maxCheckDistance, layerMask)) { if (hit.collider.gameObject != curInteractGameobject) { curInteractGameobject = hit.collider.gameObject; curInteractable = hit.collider.GetComponent<IInteractable>(); SetPromptText(); } }
+ 부딪히는 오브젝트의 정보를 가져오는 부분은 SetPromptText()입니다.
script를 통해 text를 굵게 해줄 수 있는 방법은 <b>text</b> 입니다.
5. 폰트
Text(MeshPro)를 사용하면 편하긴 하지만 기본 폰트는 한글을 지원하지 않습니다.
그렇기 때문에 폰트를 변경해줘야하는데요.
폰트 중에서도 원하는 값들만 받을 수 있도록 지정해줄 수 있습니다.
Window - TextMeshPro - Font Asset Creator
Source Font File - 베이스가 될 폰트
Character Set - 사용 가능한 글자들(영어, 한글, 특수문자 등) 설정
Character Sequence - Character Set을 Custom Range로 하게 된다면 나오는 부분
32-126,44032-55203,12593-12643,8200-9900
영어 범위 : 32-126
한글 범위 : 44032-55203
한글 자모 : 12593-12643
특수 문자 : 8200-9900
글꼴에 따라 지원하지 않는 특수 문자는 missing
이렇게 설정해주면 됩니다.
Generate Font Atlas 누르고 다 끝나면 Save 해주면 끝납니다!
어느정도 초반은 정리가 된 것 같습니다.
가장 중요한 인벤토리 부분부터 적과 싸우는 부분까지는 내일 정리해보겠습니다...
아무래도 서바이벌류 게임을 만들다보니깐 이것 저것 생각할게 많아서 너무 양이 많네요 ㅠㅠ