참고 https://tonikat.tistory.com/10 https://lee-seokhyun.gitbook.io/workspace/client/easy-mathematics/gdc2012/3 만들어 본 이유 평소에도 리그오브레전드 게임의 챔피언, 카이사의 Q 스킬 '이케시아 폭우'를 쓸 때마다 토도도독 박히는 느낌이 좋았다. 그런 느낌은 못 냈지만, 비슷하게 구현한 게시글을 봐서 나도 내 방식대로 구현해보았다. 베지어 곡선에 대해 많이 공부하게 되었다. 핵심 코드 가장 핵심은 역시 베지어 곡선이다. 3차 베지어 곡선을 썼는데, 3차 베지어 곡선은 점 4개로 위치를 구하는 것이다. 방정식으로 정석으로 코딩하면 이렇게 되는데, 수포자인 나는 이해가 한번에 가지 않는다. /// /// 3차 베지어 곡선...
기타
참고 옛날 게시글이긴 하지만, 쉐이더에 익숙해질 겸 만들어보았다. https://gamedevforever.com/326 원리 복잡한 수학은 아니고 약간의 수학을 얹었다고 설명해주시는데, 나한텐 이해하기 어려웠다...!! 순서대로 차근차근 이해해보자... 1. 최종적으로 알아야 할 값은 P' 위치이다. P' 위치 = P 위치 + (L 방향 * 선분 H 길이) 이다. P 위치는 World Position 노드로 알 수 있고, L 방향도 커스텀 노드로 알 수 있다. 2. H 길이를 구하려면......... 또 차근차근 이해해보자. 닮음비를 이용할 것이다. L:L.y = H:O H*L.y = O*L H = (O*L)/L.y L은 Normalize(빛 벡터)이기 때문에, 1이다. H = O/L.y 선분 O의 길..
원하는 목적 UI에 들어가는 스프라이트 이미지가 있고, 테두리만 걸러내는 기능이 필요했다. 시도 테스트용 이미지로 옛날에 만들었던 구름? 텍스쳐를 사용했다. 이런 생각을 통해 이렇게 만들게 되었다. -> (원본 텍스쳐 - 조금 줄인 텍스쳐)를 하면 테두리만 남지 않을까? -> 텍스쳐를 어떻게 줄이지? -> UV Tiling으로 오브젝트를 늘려서 조절한 뒤에, Offset을 슥슥 조절하면 되지 않을까? Shader Graph는 Sprite Unlit로 생성했다. 이미지의 Tiling을 늘려보았다. Tiling을 조절해도 단 하나만 보이기 위해, 이미지의 Wrap Mode를 Repeat에서 Clamp로 변경했다. Offset을 조절해서 중앙에 오도록 만들어보자. ( 짤려서 안 보이지만, Offset 값은 (..
퇴근하고 와서 할 게 없다. 프로그래밍은 실컷 하다왔으니 더 공부하긴 싫다. 유튜브 보거나, 게임으로 시간 떼우기엔 너무 하는 게 없는 것 같다. 저번에 모델링을 해보려고 3ds Max 툴로 입문했는데, 요즘은 다 Blender를 쓰는 것 같아서 3ds Max에 흥미를 잃었다. Blender를 배워야겠다고 생각만 하고 있었는데, 그게 오늘인가보다. 단축키 정리는 정리해놔도 본 기억이 별로 없어서 안하려고 했는데, 튜토리얼 보다보니까 너무 많다......... 이거는 무조건 까먹는다. 여담 블렌더는 신기하게도 엄청 가벼운 느낌인데, 없는 기능이 없는 것 같다. 무료에다가 설치도 진짜 빠르다. 3ds Max랑 Blender 둘 다 찍먹만 해본 경험으로써 무겁고 설치도 힘든 3ds Max는 개인적으로 사용감이..
https://www.youtube.com/watch?v=1fQzBYepKrY 위 튜토리얼을 보고 따라했습니다. 이거는 딱히 적어서 정리할 만한, 어려운 내용이 없다. Step 노드를 활용하면 이런 효과도 만들 수 있다~ 이런 느낌이다. Texture로 할 때는, 윗 부분 Position으로 하던 거를 Texture로 바꿔주기만 하면 된다. 튜토리얼에서는 Bloom효과를 적용해서 더 이쁘게 나오긴 했는데, 귀찮아서 적용 안 했다.
https://www.youtube.com/watch?v=M7ICBYmZkds 위 튜토리얼을 따라했습니다. Opaque Texture 설정 투명 효과를 내려면, 뒤에 있는 오브젝트가 보여야 한다. 정말로 투명해지는 게 아니라, 투명이 될 모델에 뒤에 있는 오브젝트가 텍스쳐처럼 그려지는 것이다. 뒤의 그림을 가져오기 위해, Opaque Texture를 체크해주어야 한다. Opaque Texture 설정은 불투명 오브젝트를 다 그린 다음, 그 화면을 Texture로 저장해놓겠다는 의미이다. 그래서 반투명 오브젝트를 그릴 때, 저장해놓은 Texture를 이용할 수 있다. 그만큼 성능에 영향이 많이 가서, 모바일에서는 안 쓰는게 좋을 것 같다고 한다. Shader Graph 설정 라이팅 연산 없이, 불투명 오브..
Shader Graph가 재밌어서, 간단하게 만들어보기로 했다. Main Light 설정부터 한다. Shader Graph의 노드에는 Light 노드가 없어서, Custom Function으로 Light를 받아와야 한다. Shader Graph는 Unlit Shader를 사용했다. #if defined(SHADERGRAPH_PREVIEW) lightDir = half3(0.5f, 0.5f, 0.0f); lightColor = 1; #else Light light = GetMainLight(); lightDir = light.direction; lightColor = light.color; #endif 사실 공식이 잘 기억 안나서, 저번에 코드로 정리해놓은 것을 보고 만들었다. 2021.03.03 - [기..
상황 Item 객체를 생성해서 초기화를 한 뒤, 인벤토리에 저장하는 코드이다. // 테스트용 아이템 생성. UWeapon* TestItem = NewObject(); TestItem->Init(200); // 데이터 테이블에서 200번의 아이템 정보로 초기화시킴. // 인벤토리에 아이템 추가. Inventory->AddItem(TestItem); // 인벤토리에 아이템이 제대로 추가가 안 되는 오류가 발생함. 지금까지는 오류를 고칠 때, UE_LOG() 매크로로 로그를 출력하는 간단한 방법만 쓰고 있었다. 이 방법으로는 Item 객체 자체를 출력하는 것이 너무 삽질(?)이었다. '이 기회에 언리얼에서 디버깅 한번 해보자' 라는 생각이 들어서 하게 되었다. 디버깅 단축키 유니티에서 디버깅을 해보아서 디버깅..