본문 바로가기

전체 글75

[Unity Course 2] 10. 내비게이션 고급 기법 위키북스 출판사 이재현 저자님의 '절대강좌! 유니티' 책을 참고하여 필기한 내용입니다. 동적 장애물지금까지 드럼통을 폭파시켜도 미리 베이크 했던 내비메시가 여전히 그 지점은 지나갈 수 없어서이와 같이 동적으로 변경되는 장애물에 NavMeshObstacle 컴포넌트를 활용하면 쉽게 해결 가능NavMeshObstacle 컴포넌트Barrel 프리팹에 Navigation Static 옵션을 해제 Navigation을 다시 BakeBarrel 프리팹을 더블클릭하여 open 하고 Nav Mesh Obstacle이라는 컴포넌트를 추가한다.속성값은 다음과 같이 변경프리팹 에디트 모드 창의 Auto Save 옵션이 체크되어 있어서 자동으로 저장됨드럼통이 사라지면 직선으로 추적해온다 그러나 드럼통이 촘촘히 연결되어 설치된.. 2024. 6. 26.
[Unity Course 2] 09. 레이캐스트 활용 위키북스 출판사 이재현 저자님의 '절대강좌! 유니티' 책을 참고하여 필기한 내용입니다. 대부분의 fps게임은 총알이 날라가지 않고 발사와 동시에 적에게 명중하는 것을 알 수 있다.레이캐스트: 눈에 보이지 않는 광선을 쏘아서 해당 광선에 맞은 물체가 적인지 여부를 판단한 뒤 여러 가지 후처리를 하는 방식비단 발사 로직 뿐만 아니라 감지 센서 역할과 클릭 후 이동, 또는 회전하는데도 활용됨 DrawRay: 레이캐스트는 씬 뷰에서 시각적으로 표시되지 않기때문에 개발할 때는 DrawRay 함수를 이용하여 시각적으로 표시한다.FireCtrl함수에서 스크립트 Update함수를 다음과 같이 추가한다.private void Update(){ // Ray를 시각적으로 표시하기 위해 사용 Debug.DrawRa.. 2024. 6. 26.
[Unity Course 2] 08. 게임 매니저 3 위키북스 출판사 이재현 저자님의 '절대강좌! 유니티' 책을 참고하여 필기한 내용입니다.스코어 UI 구현하이러키 뷰의 Panel - Hpbar 를 복사하고 하위 Image를 지운다음 Text의 내용을 다음과 같이 변경한다SCORE : 00000 GameManager 스크립트를 아래와 같이 수정한다.using System.Collections;using System.Collections.Generic;using TMPro;using UnityEngine;public class GameManager : MonoBehaviour{ ...생략 // 싱글턴 인스턴스 선언 public static GameManager instance = null; // 스코어 텍스트를 연결할 변수 .. 2024. 6. 25.
[Unity Course 2] 08. 게임 매니저 2 위키북스 출판사 이재현 저자님의 '절대강좌! 유니티' 책을 참고하여 필기한 내용입니다.싱글턴 디자인 패턴앞서 구현한 GameManager 에 접근하는 방식은 코드도 길고, 접근할 때 GetComponent 함수를 사용해야하는 번거로움이 있음 싱글턴 디자인 패턴  : 오직 하나의 인스턴스만 생성하고, 그 인스턴스에 전역적인 접근을 제공하는 소프트웨어 디자인 패턴 중 하나GameManager 인스턴스를 static 키워드를 사용하여 정적 메모리 영역에 올려두고 다른 스크립트에서 바로 접근할 수 있게 구현하는 방식using System.Collections;using System.Collections.Generic;using UnityEngine;public class GameManager : MonoBeha.. 2024. 6. 24.
[Unity Course 2] 08. 게임 매니저 1 위키북스 출판사 이재현 저자님의 '절대강좌! 유니티' 책을 참고하여 필기한 내용입니다. 적 캐릭터의 출현 로직게임 매니저그이 첫번째 역할 일정 시간 간격으로 몬스터가 불규칙한 위치에 생성씬뷰에 있는 모든 Monster 삭제하되 먼저 Monster 가 프리팹으로 잘 들어가 있는지 확인하기STAGES에 Floor, Wall를 모두 넣어서 차일드화 한다. SpawnPointGroup 생성빈오브젝트를 생성하여 SpawnPointGroup으로 이름을 변경하고 Transform.position은 무조건(0,0,0)으로 설정한다하위에 Point라는 이름의 빈오브젝트를 생성후 이전에 만들었던 MyGizmos를 드래그 드롭하여 색상을 변경한다.Point를 여러개 복사하여 맵 곳곳에 배치한다. GameManager 객체 .. 2024. 6. 24.
[Unity Course 2] 07. 유니티 UI 시스템 6 위키북스 출판사 이재현 저자님의 '절대강좌! 유니티' 책을 참고하여 필기한 내용입니다.생명 게이지 구현Play씬으로 이동UI Scale Mode 옵션설명Constant Pixel Size스크린 해상도와 관계없이 픽셀의 크기대로 UI를 표시Scale With Screen Size스크린 해상도에 맞게 UI를 조절, 해상도가 커지면 UI도 커짐Constant Physical Size스크린 해상도와 관계없이 설정한 물리적인 크기를 유지Scale With Screen 으로 옵션을 변경하기 Canvas 하위에는 Pannel을 생성하고 이름을 Panel - Hpbar 변경한다. Rect Transform의 앵커는 shift를 누르고 Also set pivot으로 넓이와 높이, 위치는 참고하여 적절히 배치하고Image.. 2024. 6. 24.
[Unity Course 2] 07. 유니티 UI 시스템 5 위키북스 출판사 이재현 저자님의 '절대강좌! 유니티' 책을 참고하여 필기한 내용입니다.TextMesh ProTextMeshPro를 사용하기 위한 필수 리소스를 설치한다. 기존에 사용하던 Unity UI의 Text 는 해상도가 깔끔하지 않았다.그에 비해 TextMeshPro는 여러가지 텍스트 렌더링 기법을 이용해 무한으로 확대하거나 축소해도 글자의 외곽선이 뭉개지거나 해상도가 떨어지지 않는다. 아래의 Import TMP Examples and Extras를 누르면 샘플과 추가 기능을 활용할 수 있는 폰트와 셰이더가 설치된다. Canvas 하위에 Text (TMP)를 새로 생성하고 앵커포인트를 좌측 상단으로 설정한다.Margins값을 변경한다. Text Input 값을 다음과 같이 입력한다Space Shoo.. 2024. 6. 24.
[Unity Course 2] 07. 유니티 UI 시스템 4 위키북스 출판사 이재현 저자님의 '절대강좌! 유니티' 책을 참고하여 필기한 내용입니다.Text 컴포넌트속성설명Text표시할 텍스트Font텍스트에 사용할 폰트Font Size폰트의 크기Line Spacing여러 줄일때 줄간격Rich Texr입력 텍스트를 마크업 형식으로 표현할지 여부Alignment가로, 세로 글 정렬 옵션Horizontal OverflowText 가로 영역을 넘어선 글의 처리 방식Warp: 다음 행으로 내려쓴다Overflow :  가로 범위를 넘어가게 허용Vertical OverflowText 세로 영역을 넘어선 글의 처리 방식Truncate : 넘어간 글자는 잘라내 표시하지 않는다.OverFlow : 세로 범위를 넘어가게 허용BestFitFont Size를 무시하고 Text 컴포넌트의 .. 2024. 6. 24.
[Unity Course 2] 07. 유니티 UI 시스템 3 위키북스 출판사 이재현 저자님의 '절대강좌! 유니티' 책을 참고하여 필기한 내용입니다. RawImage 컴포넌트이전에 받았던 에셋에서 이미지 하나를 선택하여새로만든 RawImage의 Texture에 넣기이때 하이러키뷰의 순서 지켜주기 Image 컴포넌트와 비슷하지만 배경 이미지와 같은 큰 이미지에 사용됨일반 텍스처도 사용할 수 있으며 Sprite Atlas 에 포함되지 않는다.큰 사이즈의 이미지가 Sprite Atlas에 포함된다면 불필요한 메모리를 낭비한 번만 사용될 이미지일 때 사용됨 [Set Native Size] 버튼을 눌러 원본 이미지 크기로 설정Panel의 Color 속성값 변경Button 컴포넌트메뉴에서 게임을 시작하기 위한 Start 버튼 제작Pannel 하위에 Button 오브젝트 생성속.. 2024. 6. 22.
[Unity Course 2] 07. 유니티 UI 시스템 2 위키북스 출판사 이재현 저자님의 '절대강좌! 유니티' 책을 참고하여 필기한 내용입니다.Rect Transform 컴포넌트기존 Transform 과 동일한 역할을 하는 컴포넌트로 UI 항목에 기본적으로 추가됨 Panel 추가  Panel 의 주된 용도는 UI 항목을 그룹화메뉴를 구성할 때 여러 버튼을 하나의 Panel에 차일드화 해서 구현 가능 청색 원 아이콘을 드래그 하면 사이즈 조절가능원을 클릭하고 Alt 키를 누른채 드래그 하면 모든 방향이 동시에 조절됨 가운데 있는 청색 원은 pivot 역할을 하는 회전축 역할로 모서리 바깥쪽을 선택하여 드래그 하면 회전하는 모습을 볼 수 있음 앵커 프리셋: 각 UI  항목의 정렬과 크기를 미리 정의해놓은 집합, Unity UI의 기본 개념앵커 포인트현재 앵커 프리.. 2024. 6. 22.
[Unity Course 2] 07. 유니티 UI 시스템 1 위키북스 출판사 이재현 저자님의 '절대강좌! 유니티' 책을 참고하여 필기한 내용입니다. 유니티 UI 구현 형태유니티에서 제공하는 UI 3가지- IMGUI(Immediate Made GUI)- UI Toolkit- Unity UI (UGUI) IMGUI: 코드를 이용하여 UI 를 표시하는 방법, 개발 과정에서 간단한 테스트용으로 사용OnㅎGUI 함수는 Update 함수와 같이 매 프레임 발생하 비효율적UI Toolkit화면상의 위치나 정렬 등을 수정할 때 일일이 수작업으로 수정해야되는 단점UI Asset 파일로 UI 스타일을 정의하고 디자인함UXML 기반의 UI  디자인은 위치, 크기, 정렬 등의 속성을 수치로 관리하여 편리한 도구Unity UI: UGUI라는 명칭으로 사용되다가 변경됨, 게임오브젝트 기반.. 2024. 6. 22.
[Unity Course 2] 06. 적 캐릭터 제작 6 위키북스 출판사 이재현 저자님의 '절대강좌! 유니티' 책을 참고하여 필기한 내용입니다. 사용자 정의 이벤트 - Delegate주인공이 사망하면 모든적이 공격을 중지할 수 있게 foreac문을 이용하여 순차적으로 공격 중지 함수를 호출 적 캐릭터가 많다면 SendMessage는 좋은 방법이 아님 순차적인 호출 방식을 이벤트 구동(Event Drivern) 방식으로 변경: 특정한 조건을 만족하면 자동으로 알려주는 메세지를 의미 , 순차적으로 호출하는 방식보다 효율적임 델리게이트함수를 참조하는 변수를 의미, 함수를 저장할 수 있는 일종의 변수 ( C++의 포인터)아래의 코드는 예제이므로 작성하지 않아도 된다.using UnityEngine;public class DelegateDemo : MonoBehavio.. 2024. 6. 22.
[Unity Course 2] 06. 적 캐릭터 제작 5 위키북스 출판사 이재현 저자님의 '절대강좌! 유니티' 책을 참고하여 필기한 내용입니다.트특정 레어 간의 충돌 감지지금까지 동작들이 문제 업어보이지만 몬스터는 추적하는 동안에도 충돌 이벤트가 발생하는 것을 확인할 수 있음 물리 엔진 설정은 레이어로 판단하기 때문에 각 Collider 를 서로 다른 레이어로 지정해야 함Layer 에 MONSTER_BODY, MONSTER_PUNCH 를 추가해준다.Monster 오브젝트에 Layer를 MonsterBody로 설정하는데 이때 무조건 No the object only로 선택해야된다.이때 몬스터 손인 wrist 를 찾아서 둘의 레이어를 MONSTER_PUNCH로 변경한다.Project Settings 에 들어가서 서로 물리적인 충돌을 처리하지 않는다Layer Col.. 2024. 6. 22.
[Unity Course 2] 06. 적 캐릭터 제작 4 위키북스 출판사 이재현 저자님의 '절대강좌! 유니티' 책을 참고하여 필기한 내용입니다. 혈흔 효과해당 에셋의 파티클이 어떤 효과인지 살펴보기 지금까지는 프리팹을 연결하여 사용했지만 프리팹을 런 모드에서 스크립트를 통해 로드하는 방법을 사용 프로젝트 뷰에서 "Resources" 라는 이름의 폴더를 생성, 이 폴더는 유니티에 예약된 폴더로 대소문자를 지켜야함 이 폴더는 런타임에 불러와 사용할 수 있는 특징이 있지만 빌드할 때 실행 파일에 모두 포함됨, 사용되지 않는 리소스는 없어야됨 using System.Collections;using UnityEngine;using UnityEngine.AI; // 내비게이션 기능을 사용하기 위해 추가해야 하는 네임 스페이스public class MonsterCtrl :.. 2024. 6. 21.
[Unity Course 2] 06. 적 캐릭터 제작 3 위키북스 출판사 이재현 저자님의 '절대강좌! 유니티' 책을 참고하여 필기한 내용입니다.using System.Collections;using UnityEngine;using UnityEngine.AI; // 내비게이션 기능을 사용하기 위해 추가해야 하는 네임 스페이스public class MonsterCtrl : MonoBehaviour{ // 몬스터 상태의 정보 public enum State { IDLE, TRACE, ATTACK, DIE } // 몬스터 현재 상태 public State state = State.IDLE; // 추적 사정거리 public float traceDist = 10.0f; .. 2024. 6. 21.
반응형