목록Unity(유니티)/유니티 공부 (72)
Deff_Dev
이 글에서는 게임 수학에 관한 자세한 내용은 다루지 않고 사용법과 왜 쓰는지에 대해 설명하겠다.게임 수학에 관한 자세한 설명은 다른 블로그를 찾아보면 자세하게 설명되어있으니 다른 블로그 참고하면 된다.만들어 볼 기능 위처럼 로켓(삼각형)이 바라보고 있는 방향의 부채꼴 범위 안에 들어온 오브젝트를 탐지하는 기능을 만들어보겠다. 이 글에서 설명하는 프로젝트는 2D이기 때문에 Vector2를 기준으로 설명하겠다.내적 내적은 Vector2.Dot(vector , vector)로 사용 가능하다. 그럼 내적을 왜 쓸까 ? 내적은 플레이어가 바라보는 방향과 물체의 사이 각도의 코사인 값를 구하기 위해 사용한다. Vector2.dot(오브젝트가 바라보는 방향, 타겟의 방향);이런 식으로 내적을 사용할 수 있고 내적에 ..
NPC에 가까이 갔을 때 상호 작용 키가 활성화되고 해당 키를 누르면 대화가 시작되는 기능을 만들어볼려고 한다. 이 글에서는 편의를 위해 외부 컴포넌트를 가져올 때 캐싱해서 가져온다는 것을 가정하에 모든 과정을 진행하기 때문에, 본인의 프로젝트에 맞게 적절하게 수정하면서 진행하면 된다. 그리고 카메라 줌, 텍스트 타이핑 등 디테일적인 요소 구현은 이 글에서 다루지 않았으니 참고하길 바란다.NPC 대화 저장 및 반환하는 클래스NPC 대화 내용을 저장하고 현재 대화 단계에 맞는 대화를 반환하는 DialogueData 클래스를 생성한다.[System.Serializable] public class DialogueData { private int dialogueStep = 0; // 대화 단계 public st..
객체 지향의 원칙을 지키기 위해 public 접근 제한자의 사용을 지양하고 대신 프로퍼티를 많이 이용한다 프로퍼티를 사용하다 문득, 프로퍼티의 Set을 이용해 private 변수의 값을 바꾼다면 무슨 의미가 있는지 의문점이 생겼다. public 선언된 변수에 접근해 바꾸는 것과 프로퍼티를 이용해 private로 선언된 변수에 접근해 바꾸는 것은 둘다 변수 값을 바꾸는 것이다. 그럼 도대체 프로퍼티를 왜 쓸까 ? 프로퍼티를 왜 쓸까 ? 먼저 이 물음에 답을 하자면, 프로퍼티는 private으로 선언된 변수의 값을 외부에서 접근할 수 있도록 허용하면서도 캡슐화를 지원하는데, 이를 통해 데이터 보호와 클래스의 일관성을 유지할 수 있다. 프로퍼티는 get을 통해 변수의 값을 읽을 수 있으며, set을 통해 변수..
패턴 매칭이란 ? switch문, switch 식, is 연산자를 이용하여 어떤 식이 특정 패턴(형태)과 일치하는지 검사하는 것이다. 패턴 매칭을 이용하면 장황하고 거추장스러운 분기문을 간결하고 읽기 쉬운 코드로 대체할 수 있다. 식 (Expression) → 패턴 매칭 → 결과 (bool) 식(Expression) 이란 ? 코드에서 단일 결과값을 만들어낼 수 있는 연산자와 연산자의 조합을 한다. // 식 a = 123; c = typeof(int); d = a + 52; b = int; // int는 값이 아니므로 식 X 선언 패턴 주어진 식이 특정 형식 ( int, string … )과 일치하는지를 평가한다. 만약 주어진 식과 형식이 일치한다면, 선언 패턴은 식을 해당 형식으로 변환한다. 식이 주어진..
swith식이란 switch 문과 다르게 결과값을 만들어낼 수 있는 연산자와 연산자의 조합이다. switch 식은 case나 break를 작성하지 않기 때문에 값을 내야할 경우에 더 간결하고 읽기 좋은 코드를 작성할 수 있다. 먼저 swith 문을 이용해 작성한 학점 계산기 코드이다. 해당 코드를 switch 식을 이용하면 더 간결하게 작성할 수 있다. switch 식을 이용한 학점 계산기 코드이다. case 키워드를 ⇒로 변경하고 각 케이스를 콤마( , )로 구분한다. switch 문과 같은 기능을 하는 코드지만 switch 식이 더 간결하다는 것을 확인할 수 있다. 케이스 가드 (when)을 이용하여 추가적인 분기 처리가 가능하다. repeated가 true일 때 90점 이상이라도 B+ 점수를 받는다.
null 조건부 연산자 (?.) 이란 ? 객체의 멤버에 접근하기 전에 해당 객체가 null인지 검사하여 그 결과가 참(즉, 객체가 null) 이면 그 결과로 null을 반환하고, 그렇지 않은 경우에는 . 뒤에 지정된 멤버를 반환한다. 쉽게 말해서 객체가 null 인지 검사하고 null 이라면 null을 반환, null이 아니라면 ?. 뒤의 코드를 실행한다. 예제 코드 두 코드는 같은 기능을 동작하는 코드이다. 배열과 같은 컬렉션 객체에 사용할 때는 ?[ ]를 사용한다.
이 포스팅에서는 내배캠 Unuty 사전캠프 5주차 과정에서 내가 겪은 오류들과 해결 방법에 대해 포스팅하겠다. Unuty 사전캠프 5주차 [내배캠 Unity 4기] 사전 캠프 5주차 사전 캠프 5주차 프로젝트는 4주차 때 만들었던 '카드 뒤집기' 게임에 시작 화면, 스플래시 이미지 만들기, 오디오 삽입, 광고 삽입, 안드로이드 빌드 등을 추가한 프로젝트였다. 사전 캠프 4주차 deff-dev.tistory.com 일단 해당 강의에서는 유니티 공식 문서의 코드를 이용해 광고를 붙혔다. Initializing the SDK in Unity Initializing the SDK in Unity#To initialize the SDK, you must reference your project’s Game ID ..
해당 포스팅은 고박사님의 유니티 C# 강의를 보고 공부한 내용과 추가적으로 공부한 내용을 정리한 포스팅입니다. 해시테이블 (Hashtable) 키(Key)와 값(Value)의 쌍으로 이루어진 데이터를 다룰 때 사용하는 자료 구조 해시테이블은 요소에 접근하기 위해 object 타입의 데이터를 사용한다. 키(Key)는 int, float, string, class 등 어떤 형식이든 사용 가능하다. 배열 만큼 탐색 속도가 빠르다. 해시테이블 데이터의 모든 요소를 탐색할 때는 foreach 사용 ex) hashtable[”Player”], hashtable[100] … 해시테이블 함수 HashTable.Add(object(Key), object(Value)) 해당 키를 사용하는 값을 추가한다. int, floa..