유니티 22

유니티 - 생성 지점을 씬창에서 가시적으로 보이도록 하기

만일 Empty GameObject를 만들어 몹이 나오는 생성 지점(Spawn Position)을 여러 곳 두었는데 문제는 이 생성 지점들이 가시적으로 보이지가 않는 다는 것이다. 이럴 때는  각각의 생성 지점 오브젝트의 인스팩터 창에서 씬창에서 보이는 아이콘을 선택해줄 수가 있다.파란 원형 아이콘을 선택 시 다음과 같이 씬창에 보이게 되며 게임창에선 보이지 않는다. 다른 생성 지점에 대해서도 아이콘을 적용시켜주면 다음과 같이 씬창에서 가시적으로 생성 지점을 확인할 수 있게 된다.

유니티 2024.06.18

C# - ??, is, as 연산자와 패턴 일치 기법

?? ?? 연산자는 null 판별할 때 쓰인다. string result = str ?? "str is null"; 만일 str 이 null이면 오른쪽에 있는 "str is null" 이 result에 들어가고null이 아니라면 str 그대로 result에 들어간다. ??=str ??= "str is null"; 이런식으로 쓰이면 만일 str이 null이면 "str is null"이 str에 들어가고null이 아니면 str 값 그대로 유지하는 것이다. str ??= GetDefaultValue(); 이런식으로 null일 때는 기본값을 설정하는 함수의 반환값으로 설정할 수도 있다. is is는 영어 is랑 비슷하게 생각하면 된다. A is B하면 A == B로 생각할 수 있다. 다만 is 뒤에는 변수가 오..

C# 2024.06.17

유니티 - lerp와 slerp

lerp나 slerp나 결국 보간법이라 두 점을 잇는 방법을 얘기하는 것인데 lerp, slerp 둘다 인자의 의미는 같다. lerp(From, To, Rate)로 From은 출발지, To는 목적지로 생각하면 되고 Rate는 비율로 생각하면 된다. 비율은 [0, 1] 사이의 수로 나타내며 0이 0%, 1이 100%로 0.1은 10%, 0.5는 50%로 이해하면 된다. 그래서 0.4(40%)의 비율은  무엇을 의미하는걸까?lerp(A, B, 0.4f) 를 살펴보자 A를 출발점, B를 도착점으로 봤을때 40퍼센트까지 왔다는 것을 의미한다. (즉 도착까지 60퍼가 남은 거다) lerp의 경우 선형보간이기 때문에 위와 같이 직선으로 출발점, 도착점을 잇고 비율에 따라 위치를 정해주면 된다. 반면 slerp은 구..

유니티 2024.06.03

유니티 - 2D Sprite를 이용한 체력바(게이지바) 구현하기

2D Sprite를 활용하여 체력바(게이지바)를 간단하게 구현하는 방법이 있다.만일 3D 프로젝트라 2D Sprite가 없는 경우엔 패키지에서 설치하도록 하자 먼저 패키지 매니저에서 2D Sprite를 설치한다. 프로젝트 뷰에서 2D - Sprites - Square 생성 UI - Image 로 체력바가 들어갈 이미지를 만듬  만든 Square Sprites를 이미지의 Source Image에 넣어준다. 체력바를 만들것이니 색상을 빨간 색으로 해두면  체력바를 만들 수 있다.  이는 이미지 컴포넌트의 Fill Amount가 1일 때의 모습이다.  만일 Fill Amount가 0이 되면  빈 게이지가 만들어진다. 이 Fill Amount 값을 조절하여 게이지를 구현할 수가 있게 된다. Fill Amount..

유니티 2024.05.30

유니티 -절차적 Skybox 만들기

Assets폴더에 Materials 폴더를 만들고 Skybox 이름의 Material을 생성 쉐이더를 Skybox/Procedural로 변경, Procedural은 절차적이라는 의미이다. 이제 머테리얼을 적용시켜보자  Window - Rendering - Lighting   Environment의 Skybox Material에 아까 만든 Skybox를 넣어 머테리얼을 적용시킴  머테리얼 값을 조절하면서 원하는 Skybox를 만들어보자 해의 크기, 하늘과 땅의 색을 변경해줄 수 있으며Exposure(노출) 값이 커질 수록 쨍한 느낌을 준다.  스카이박스를 설정해준 모습 절차적 스카이박스의 속성에 대한 자세한 정보는 https://docs.unity3d.com/kr/2019.4/Manual/shader-sk..

유니티 2024.05.27

C# - Clamp 함수와 사용 예제

Clamp 함수가 무엇이며 어떨 때 쓰이는 지 알아보도록 하자 Mathf.Clamp 함수는 한마디로 value값을 제한해주는 함수이다. value 값이 min 값보다 작으면 min 값으로, max 값보다 크면 max값으로 만든다. 사용되는 예를 보면 이해가 쉽게 된다. 게임에서 플레이어의 현재 체력은 0보다 낮아선 안되고 최대체력을 넘어서는 안될 것이다. 이것을 Clamp 함수를 통해 제한해줄 수 있다.0은 최솟값, 최대체력이 최댓값이 된다. 코드로 작성해보면CurrentHealth = Mathf.Clamp(CurrentHealth, 0, MaxHealth); 이런 식으로 간단하게 현재 체력을 제한해줄 수가 있는 것이다. 적에게 공격당해도 체력은 0 밑으로 떨어지지 않을 것이고 체력을 회복하더라도 최대 ..

C# 2024.05.27

유니티 아크탄젠트(Atan2)에 대하여

*해당 포스팅은 스파르타코딩클럽의 강의를 기반으로 작성했습니다* 먼저 아크탄젠트에 대해 알아보기 전에 삼각함수에 대해 알아볼 필요성이 있다.우리가 흔히 알고 있는 공식이다. 삼각함수는 각도를 통해 삼각형들의 변들 간의 비율을 알아낼 수 있는 함수이다. 여기서 우리가 주목해야할 것은 탄젠트이다. 탄젠트의 경우엔 밑변 분의 높이의 값을 가지고 있는데 밑변을 X 값, 높이를 Y 값으로 볼 수도 있다. 그렇게 본다면 탄젠트는 비율이 아닌 좌표로 나타낼 수 있게 된다. 각도를 통해 좌표를 알아낼 수 있다는 것이고 이를 역으로 생각해보면 좌표를 통해 각도 역시 알 수가 있게 된다. 이는 거꾸로 했다하여 탄젠트의 역함수인 arctangent 가 된다. 다시 말하자면 각도를 통해 비율을 구하는 것이 삼각함수이며 이를 ..

유니티 2024.05.13

유니티 PlayerPrefs

총 easy, normal, hard 3가지의 스테이지가 있는 게임이라 하자 이 세 가지의 스테이지에 대한 최고 점수를 PlayerPrefs를 이용해 간단하게 저장하고자 한다. switch (level) { case 1: key = "easyBest"; break; case 2: key = "normalBest"; break; case 3: key = "hardBest"; break; } int로 선언된 level 변수의 값에 따라 PlayerPrefs에 쓸 key 값을 설정해주자 bool PlayerPrefs.HasKey(string key) key 값은 string으로 PlayerPrefs의 HasKey 함수를 통해 해당 key의 데이터가 있는 지를 확인 할 수가 있다. 데이터가 있다면 true 값을..

유니티 2024.04.18