소개
주요 경력
現 2016 ~ 공주대학교 게임디자인학과 강의전담교수
現 2022 ~ 유니티 공식 인증 강사 (Unity Certified Instructor)
現 2014 ~ 2015, 2022 ~ 호서대학교 게임학과 외래교수
前 2023 포항공과대학교 전자전기공학과 외래교수
前 2015 ~ 2018 백석대학교 정보통신학부 외래교수
前 2016, 2020~2021 배재대학교 게임학과 외래교수
前 2016 한국영상대학교 게임애니메이션과 외래교수
前 2016 남서울대학교 VRAR 외래교수
前 2017 계원예술대학교 게임미디어과 외래교수
前 2018 상명대학교 사진영상콘텐츠학과 외래교수
前 2019 공주대학교 컴퓨터공학부 외래교수
前 2022 우송대학교 테크노미디어융합학부 (게임멀티미디어전공) 외래교수
"고박사의 유니티 노트" 유튜브 운영
https://www.youtube.com/@unitynote
소개
게임 프로그래밍 전공으로 게임 개발, 유니티 엔진 강의를 하고 있습니다.
강의 분야 : 유니티 엔진(기초, 2D/3D 게임 개발, VR/AR), 서버, 인공지능, 셰이더, 게임학개론 등
강의
수강평
- 따라하면서 배우는 고박사의 유니티 하이퍼캐주얼게임 시리즈 04
- 따라하면서 배우는 고박사의 2D 플랫포머 게임 제작
- 따라하면서 배우는 고박사의 유니티 기초
게시글
질문&답변
02-05 레벨시작(마지막 강의)에서 SelectLevelController오브젝트의 SelectLevelController 컴포넌트조작
SelectLevelController 스크립트에 작성해둔 ResetData()라는 저희가 만든 메소드입니다. 메소드 앞에 [ContextMenu("..")] 와 같이 어트리뷰트를 작성하면해당 메소드를 유니티 에디터에서 메뉴와 같은 형태로 실행할 수 있습니다.
- 0
- 1
- 25
질문&답변
02-07 별아이템을 bool[] 로 한 이유가 궁금해요.
스테이지마다 3개의 별이 배치되어 있고, 0, 1, 2번 별로 구분됩니다. 0번 별을 획드하면 0번 별 UI 활성화, 1번 별을 획득하면 1번 별 UI 활성화와 같이뒤에서 UI를 출력할 때 별 획득 여부에 따라 지정된 순번의 별 UI가 활성화되기 때문에 배열을 이용해 각 별의 획득 여부를 관리합니다.
- 0
- 1
- 30
질문&답변
02-02 플레이어 체력에서 if(current >1)을 if(current > 0) 로...
if ( current > 1 )이 맞습니다. 하트가 3개 있으니 3대 맞으면 죽어야 하고,current가 3일 때 맞으면 current는 2가 됩니다. (1대)current가 2일 때 맞으면 current는 1이 됩니다. (2대)current가 1일 때 맞으면 죽습니다. (3대)
- 0
- 1
- 30
질문&답변
03-01 Hidden Tilmap에서
알파 값이 1일 때 0까지 바뀌는 시간이 1초입니다.유저가 항상 알파 값이 1일 때 충돌해서 0으로 바뀌고, 0일 때 밖으로 나가서 1로 바뀌진 않습니다. 영상 마지막의 게임 실행과 같이 왔다 갔다 하면서 알파 값이 바뀌는 도중에충돌/충돌 해제 할 수 있기 때문에알파 값이 0.5일 때는 0.5초 동안 Fade 효과를 재생하고,알파 값이 0.2일 때는 0.2초 동안 Fade 효과를 재생하기 위해tilemap.color.a를 Fade 되는 시간으로 설정합니다.
- 0
- 2
- 26
질문&답변
02-04 점프발판 Animation 뷰에서 이미지 나오게 하는 방법이 궁금해요.
지금 이미지 기준으로 왼쪽에 목록을 접거나 여는 "▶" 이렇게 생긴 아이콘을 클릭하면 됩니다.
- 0
- 1
- 27
질문&답변
02-03 추락하는 발판에서 isKinematic = true;로 하면, 중력영향 안받으니
PlatformDrop 클래스에서 OnRespawn() 메소드에 있는rigid2D.velocity = Vector2.zero; 문장을 지우고 실행해보면발판을 밟아서 떨어뜨리고, 다시 리스폰 되었을 때 속력 값이 초기화 안되서리스폰 되자마자 아래로 떨어집니다.
- 0
- 2
- 36
질문&답변
02-03 추락하는 발판의 Mathf.PingPong 메소드 설명문 수정해야 겠어요.
Mathf.PingPong() 메소드는 값이 점진적으로 증가해 두 번째 매개변수 length값을 넘어가게 되면값이 0.0 ~ length까지 왔다 갔다 하게 됩니다.length가 1일 때t가 0이면 0t가 1이면 1t가 1.1이면 0.9t가 1.2이면 0.8..t가 2이면 0t가 2.1이면 0.1과 같이 반환 값이 좌우로 왔다갔다(PingPong) 됩니다.
- 0
- 2
- 32
질문&답변
02-02 플레이어와 발판: PlatformBase 상속클래스 어태치문제
Platform_00_Moving의 경우플레이어가 발판을 밟았을 때(충돌했을 때) 자식으로 등록하는 것과플레이어가 발판과 충돌이 해제될 때 자식을 해제하는 두 가지 액션이 필요한데 PlatformBase는 발판과 충돌했을 때 UpdateCollision()을 호출한다. 는 처리만 되어 있습니다. 이 경우 추후에 다른 발판도 충돌했을 때, 충돌 해제할 때와 같이 두 가지 액션이 필요하면PlatformBase에 2가지 액션에 대한 처리를 구현해둘 수도 있는데현재 예제에서는 Platform_00_Moving만 두 가지 액션이 필요하고,결국 충돌이 해제될 때는 OnCollisionExit2D() 메소드를 호출해서 구현해야 하기 때문에PlatformMoving 클래스는 부모로 PlatformBase를 상속받지 않고발판과 충돌할 때(OnCollisionEnter2D), 충돌이 해제될 때(OnCollisionExit2D)를이벤트 메소드로 처리합니다. 그래서 Platform_00_Moving 오브젝트를 밟았을 때는 PlayerController 클래스에 있는if ( .. TryGetComponent() .. ) 조건문 내부를 실행하지 않습니다. 다른 발판들처럼 발판이니까 PlatformBase를 상속 받아서 처리해야지! 라고 한다면(1) 충돌했을 때는 UpdateCollision() 메소드를 재정의하고,충돌 해제할 때는 OnCollisionExit2D() 메소드로 처리한다.or(2) PlatformBase 클래스에 충돌했을 때와 충돌 해제할 때의 2가지 액션 처리를 메소드로 정의한다.다만 이 경우에는 다른 발판들도 충돌 해제에 대한 메소드 재정의를 넣어줘야 하는데 이동 발판 외에는 액션이 없어서 메소드를 비워둔 상태로 둬야 하기 때문에 상속을 받지 않고 별개로 처리하는 방향으로 작성했습니다.
- 0
- 2
- 30
질문&답변
01-04. 부서지는 타일에서 첫번째타일
타일에 BoxCollider2D 컴포넌트를 추가하는 부분은 PDF 교재 기준으로 5페이지에 있습니다.타일 프리팹들을 선택해서 모든 타일에 BoxCollider2D를 추가하고, 크기를 1, 1로 만들기 때문에 해당 타일 하나만 위치가 다를 수 없습니다.
- 0
- 3
- 41
질문&답변
01-03 부서지지 않고 튀는 타일 충돌처리 부분 코드 바뀌어야 될 것 같습니다.
파괴되지 않는 타일에선 괜찮은데 부서지는 타일처럼 위를 막아주지 않는 타일에서는 ResetVelocityY() 메소드가 없으면 스크린샷과 같이 뚫고 지나가게 됩니다. 플레이어가 위로 이동하면서 다른 오브젝트와 충돌할 때 0 또는 0보다 큰 값이 나오기 때문에 >= 이 조건에 반드시 걸리게 됩니다.그리고 ResetVelocityY() 메소드는 if ( movement.Velocity.y >= 0 .. ) 조건 내부에서 호출하기 때문에 y 속력이 0 이상일 때 내부로 들어가 y 속력을 0으로 초기화해주고, 타일과의 상호작용 처리를 할 수 있습니다. (사진)t
- 0
- 2
- 57