반응형 게임 개발/유니티76 유니티) Transform.Translate 메서드 좌표계 적용법 우선 Transform.Translate 메서드는 Transform 계열 메서드로, 기존 위치에서 추가로 이동하는 기능을 가진다.예를 들어 (1,1)의 위치에 있는 오브젝트에 Translate(1,1)을 적용하면 (2,2)의 위치로 바뀐다. 연속적인 이동을 표현할 때 주로 선택 가능한 경우가 2가지 있는데,물리적으로 표현하는 방법과 Transform 계열로 표현하는 방법이 있다. Transform을 기반으로 하여 연속적 이동을 표현하고 싶다면 주로 Translate를 사용하게 되어 있다.이번 글에서는 이런 Translate 메서드의 좌표계 설정법에 대해서 알아보겠다. Vector3 vec = new Vector3(a,b,c);transform.Translate(vec);transform.Translate.. 게임 개발/유니티 2025. 1. 9. 유니티 셰이더) 반투명하게 만드는 법 내 블로그의 초기 인기글 중 하나는 반 투명 오브젝트를 만드는 법이었다. https://alpaca-code.tistory.com/22 유니티 오브젝트 투명도 조절, 반투명 오브젝트 만들기유니티에서 반투명한 오브젝트 등오브젝트의 투명도를 조절하고 싶을 때가 있다.그럴 때는,머티리얼 제작 후, 위쪽의 탭에서 Legacy Shaders/Transparent/Diffuse 로 들어가 주면 R(Red) : 빨강G(Green) :alpaca-code.tistory.com 그때는 이미 유니티에서 만들어 둔 세이더 중 하나를 골라서 쓰는 방법을 소개했는데이번엔 셰이더 그래프에서 직접 구현하는 방법을 소개하겠다. [Create] -> [Shdaer Graph] -> [URP] -> [Unlit Shader Graph].. 게임 개발/유니티 2025. 1. 5. 유니티 셰이더) Quad를 양면으로 보이게 하는 방법 이건 간단한 세팅이라 글로 적고 싶지는 않은데 Quad와 plane의 특징을뒤에서 보면 안 보이는 것으로 지칭할 만큼 널리 알려져 있는 사실이자뒤에서도 보이게 하고 싶은 사람이 많을 것 같아 간단히 남긴다. [Create] -> [Shdaer Graph] -> [URP] -> [Unlit Shader Graph]로 셰이더 그래프를 만들어주자.이후 원하는 머티리얼에 드래그, 드롭으로 적용시켜 주고 셰이더 그래프를 더블클릭하면아래와 같은 창이 나올 것이다. 물론 조금씩 다를 것이다. 여기서 중요한 건 우측에 있는 Graph Inspector의 세팅이다.(만약 보이지 않는다면 우측 상단 창에 있는 Graph Inspector 버튼을 눌러주자) 조금 내리다 보면 Render Face라는 항목이 보임을 알 수 있.. 게임 개발/유니티 2025. 1. 5. 유니티 셰이더) UV에 대해서 셰이더를 다루지 않더라도 유니티를 하다 보면 반드시 UV에 대해서 들어봤을 것이다.일단 분명히 머티리얼에 관련된 것인데... 좀 더 깊게 가면 셰이더에 관한 것인데.. 정확히는 몰랐다.이번 글에선 UV가 뭔지 설명해 보겠다. 간단히 말하자면 전개도를 만드는 것이다. 이런 사진이 많이 보일 것이다. 3D 물체에 2D 텍스쳐를 입히기 위한 과정이다.여기서 U와 V는 그래프의 X, Y와도 같다. 그래서 UVW, XYZ, RGB가 모두 같은 뜻이다.1. UV의 덧셈UV의 덧셈은 평행이동으로 말할 수 있다. U나 V값을 더하면 텍스쳐의 위치가 이동한다.뭔가 연결되는 텍스쳐를 만들었거나 흘러가는 느낌을 주고 싶다면 꾸준한 덧셈을코드나 노드로 표현하면 흘러가는 느낌을 줄 수 있을지 모른다.2. UV의 곱셈UV의 곱셈.. 게임 개발/유니티 2025. 1. 3. 유니티 셰이더) Lerp 이번 글에선 유니티 셰이더에서의 Lerp를 알아보겠습니다.셰이더가 아닌 Physics의 Lerp 등을 찾고 계신 분들도 보면 도움이 될 것입니다.원리가 똑같기 때문이죠. 아무튼 Lerp는 한국어로 "선형 보간"입니다. 선형은 "일정한 비율로"라고 표현 가능하고보간은 "적절히 합친다"는 말로 일정 부분 표현이 가능합니다. 그니까 종합하면 일정합 비율로 적절히 합치는 과정입니다. 물론 합치려면 두 가지요소가 있어야 합치거나 말거나 할 수 있겠죠. 예시를 들어봅시다. 만약에 0이랑 1이 있는데 Lerp를 시키려고 합니다.여기서 비율은 1:1이라고 하면 0.5가 나오게 되는 것입니다.이제 셰이더 화면으로 들어가 봅시다. Lerp는 이렇게 생겼습니다. A와 B가 합칠 대상, T가 비율이라고 생각하시면 편합니다.뭐.. 게임 개발/유니티 2025. 1. 2. 유니티 셰이더) 텍스쳐 흑백 및 채도 조절 - Saturation 텍스쳐를 흑백 사진으로 만들고 싶거나 채도를 진하게, 혹은 연하게 바꾸고 싶다면Saturation을 이용할 수 있다. 사전상 뜻 또한 "채도"이다. 대충 이렇게 생겼다. In에는 Vec3 짜리 텍스쳐가 들어가고, Saturation 부분에1차원 값이 들어간다. 보통 float를 사용하지 않을까 싶다. 아무튼 저 값을 0으로 하면 흑백 사진이 되고, 1로 하면 원래 사진이 나온다.물론 제한은 없어서 색이 바래게 하거나 지나치게 진하게 표현도 가능하다.예시로 사진을 보여주겠다. 위 사진은 Saturation 값을 0으로 설정한 사진이다. 흑백 사진이 되었음을 알 수 있다.물론 흑백은 원리상으로 (R+G+B)/3이라는 식을 노드를 통해 만들어도 표현이 가능하긴 하다. 이건 Saturation 값을 1로 설정한.. 게임 개발/유니티 2025. 1. 2. 유니티 셰이더) 텍스쳐 출력하는 법 이번 글에선 셰이더 그래프로 텍스쳐 출력 기능을 만들어보도록 하겠다.우선 Create메뉴에서 Unlit Shader Graph를 만들어주고 더블클릭해서 들어가 주자. 구조는 이렇다. 텍스쳐를 빠르게 바꿀 수 있도록 변수(프로퍼티)로 만들었고 Sample Texture 2D의Texture에 연결해 주면 된다. [Convert to] -> [property]로 빠르게 변수화시킬 수 있다. UV도 연결해 주면 도움이 될 것이다. 그리고 메인 기능은 Sample Texture 2D에서 담당한다.저기서 Texture와 UV를 합쳐 RGB로 내보내주는 기능을 담당하기에 그대로 연결하면 된다.물론 Fragment의 Base Color는 Vector3라서 alpha값 까지는 연동이 안되지만 말이다. 타일링을 하고 싶다.. 게임 개발/유니티 2025. 1. 1. 유니티) 셰이더와 변수(프로퍼티) 연결하기 https://alpaca-code.tistory.com/253 (앞선 글) 유니티) 셰이더 변수(프로퍼티) 만들기아무 셰이더나 머티리얼에 적용시켜 보면 Aperture, Cube, Yaw, Fuzz 같은 변수들이 있다.이러한 변수들의 값을 기반으로 재질의 색상이나 반짝임, 반사 정도 등 시각적인 걸 변화시킨다. 이번 글에서alpaca-code.tistory.com 앞선 글에서 변수(프로퍼티)를 만드는 과정을 소개했었다.명도와 채도 등을 예시로 그런 변수를 실제 값에 연결만 해준다면우리가 흔히 머티리얼에서 재질의 느낌을 조작하는 역할을 수행할 수 있다고 언급했다.이번 글에서는 그 기능을 재현해보고자 한다. 셰이더를 만들면 이런 모습일 것이다.이전 글에서는 예시로 Float를 만들었지만 이번에는 색상 조절.. 게임 개발/유니티 2024. 12. 10. 유니티) 셰이더 변수(프로퍼티) 만들기 아무 셰이더나 머티리얼에 적용시켜 보면 Aperture, Cube, Yaw, Fuzz 같은 변수들이 있다.이러한 변수들의 값을 기반으로 재질의 색상이나 반짝임, 반사 정도 등 시각적인 걸 변화시킨다. 이번 글에서는 기초적으로 셰이더에서 이런 변수들을 만드는 방법에 대해서 설명하겠다.우선 머티리얼에 셰이더를 적용시킬 수 있다는 것을 알아야 하고,물체의 재질을 변화시키는 것은 결국 머티리얼의 역할이다. 즉, 머티리얼이 셰이더보다 위에 있는 개념이다.따라서 머티리얼과 셰이더를 하나씩 만들어주자. (Project 탭에서 Create -> Shader, Material) 아무튼 만들면 이런 아이콘으로 표시가 된다. 머티리얼은 익숙해서 많이들 알 것 같지만셰이더의 기본 아이콘은 저렇게 생겼다. 셰이더를 머티리얼에 .. 게임 개발/유니티 2024. 12. 10. 유니티) MissingMethodException: Method 'Player.OnTouch' not found. 아마 이 에러를 본 사람들의 절대다수는 Input System을 사용 중에 있을 것이다.이 에러는 인풋시스템의 세팅을 완료한 이후 스크립트에서 On--- 함수를 찾아야 하는데Player Input 컴포넌트에서 그걸 찾지 못해서 발생하는 에러이다. 해결해 보자.에러를 보면 알겠지만, 나는 Touch라는 이벤트 때문에 오류가 발생했다.이 에러는 Player Input에서 일으키는 것이다.이렇게 인풋 시스템에서 키 매핑과 이름도 잘 지었고,이렇게 스크립트에서 이름도 완벽하게 잘 지었음에도 저런 오류가 발생한다.이건 어떻게 해결할 수 있을까? 유니티의 설정을 유지하고(Send Message) 이 현상을 해결하고 싶다면위와 같이 바꿔주면 된다. InputValue는 Behavior가 다를 때 쓰는 클래스이다.잘 .. 게임 개발/유니티 2024. 8. 27. 유니티) 게임 실행 시 유니티 로고(MADE WITH Unity) 없애는 법. MADE WITH Unity, 게임 개발자뿐 아니라 게임을 하는 사람이라면모두가 한 번쯤은 게임을 실행할 때 보았을만한 화면이다.게이머의 입장에서는 기다려야 해서 약간 귀찮은 존재일 뿐이지만,게임 개발자의 입장에서는 이만큼 거슬리는 화면이 없다. 원래는 라이선스 제도가 있어서, Personal -> Plus -> Pro -> Enterprise가 있고,Personal은 무료인 대신 여러 가지 기능이 제한되어 있다.그중 하나가 유니티 로고 표시를 삭제하는 기능이다. 따라서 기존에는 Plus, Pro, Enterprise 등 유료 플랜을 구매해야로고의 삭제가 가능했었다. 하지만 최근 정책이 바뀌며 방법이 생겼다.오늘은 새로 생긴 그 방법에 대해서 소개해볼까 한다.https://alpaca-code.tisto.. 게임 개발/유니티 2024. 8. 25. Unity) Input System의 사용법, 장단점, 차이점. (입력 받기) 가장 먼저, Input System이란 유니티에서 "입력" 신호를 통 들어 관리하는 체계이다.현재는 확장성 등의 이유로 구(Old) 버전과 신(New) 버전이 나뉘어 있는 상태인데, 구 버전은 Input.GetKey류 메서드를 통해서 코드기반으로 이벤트를 만들고,신 버전은 미리 버튼에 대한 이벤트 함수를 만들고, 함수 안에 기능만 적으면 되는 식이다.이해가 어려울 수 있다. 비유하자면 구 버전은 하나가 생길 때마다 집을 새로 짓는 방식이고,신 버전은 미리 입주자들을 적어서 내면 집터를 만들어주어서 입주자만 들어가면 되는 상태이다.이렇게 이해하면 더욱 편할 것이라고 생각한다.1. 사용법.순서를 따지면 구 버전부터 설명하고 싶지만, 이 글의 수요는 신 버전에 대한 글 일거라 생각하여이탈률을 줄이기 위해서 .. 게임 개발/유니티 2024. 5. 11. 이전 1 2 3 4 ··· 7 다음 💲 추천 글 반응형