[Unity] Unity3D 마우스 좌표에 미사일 폭격하기
·
개발/Unity
Unity 3D 에서 버튼을 클릭하면 마우스 좌표를 따라다니는 과녁이 생성되고, 마우스 클릭 시 좌표 지점에 미사일 오브젝트가 떨어지는 기능을 구현해 보겠다. 이 기능은 현재 진행중인 디펜스 게임 프로젝트에서 추가 기능으로 넣으려고 직접 구현해 본 기능이다. 우선 Plane 과 Quad 를 생성해 준 뒤, Quad를 x축 방향으로 90도 회전시켜서 바닥과 평행하게 만들어주고 적당한 과녁 이미지를 넣어준다. 이미지 투명 처리를 하지 못해서 배경과 바닥 색을 똑같게 하여 과녁만 보이는 것 같이 꼼수를 부렸다. ㅎㅎ 그 후 미사일 역할을 할 캡슐 하나를 생성해 주고, Collider의 Is Trigger를 체크해준후, Rigidbody를 추가해주었다. 충돌을 감지하기 위해서는 충돌을 일으키는 양쪽 게임오브젝트..
[Unity] 자습서 7장 - 적 공격, 사망 이벤트
·
개발/Unity
이번 장에서는 몬스터와 플레이어에게 hp를 부여하고 서로의 공격과 사망 이벤트를 구현할 것이다. 적의 공격 능력 전 장에서 몬스터가 플레이어와 일정 거리 이내로 좁혀짐녀 공격 애니메이션을 수행하는 로직을 구현했다. 이제 실제로 데미지를 입혀야 하는데, 주인공에게 데미지를 입히는 방법은 1. 물리적인 타격, 2. 공격 주기의 수치상의 데미지 이렇게 두 가지 방식이 있다. 첫 번째 방식인 물리적인 타격을 통해 데미지를 입히는 방식으로 구현을 해보도록 하겠다. 물리적인 충돌을 발생시키기 위해 몬스터의 양쪽 손에 Sphere Collider와 Rigidbody를 추가해주고 Collider의 Is Trigger 속성에 체크해 몸체에 있는 Capsule Collider 와의 물리적인 간섭을 없애고 Rigidbody..
[Unity] 자습서 6장 - 적 캐릭터 구현
·
개발/Unity
적 캐릭터는 자신만의 인공지능을 가지고 있어 게임 속 플레이어와 유기적인 플레이를 할 수 있게 제작해야 한다. 유한 상태 머신(FSM) 유한 상태 머신은 NPC의 인공지능을 구현하는 방식 중 하나로, 적 캐릭터가 스스로 알아서 주변 환경에 적응하거나 들어오는 반응에 적절하게 반작용하도록 구현한 것을 말한다. 적이 스폰되고, 일정 범위를 순찰하다가 플레이어를 추적하고 사정거리 이내에 근접하면 공격하는 것과 같은 구조를 상태 머신이라고 하는데, 몬스터가 사망하고 소멸하는 구조이기에 상태가 유한해서 '유한 상태 머신' 이라고 부른다. FSM의 단점은 상태가 많아질수록 상태와 상태간의 연결이 복잡해지고 코드의 확장과 유지 보수가 어려워지는 것이다. 메카님 메카님은 유니티 4.0버전부터 선보인 기능으로, 애니메이..
[Unity] 자습서 5장 - 코루틴, 오디오
·
개발/Unity
Barrel 이번 장에서는 장애물 역할로써 총알이 3발 맞으면 터지는 드럼통과 오디오 등을 구현해 보았다. 리소스는 에셋 스토어의 "Barrel" 을 사용하였다. Barrel 에도 총알이 맞으면 스파크 효과가 나야하고 총알이 사라져야 하기 때문에 Wall에 적용하였던 스크립트를 그대로 적용시켜 준다. 또한 총알에 3회 피격되면 폭발하는 동작을 하기 위해 스크립트를 하나 추가해 주었다. 이 스크립트에서는 드럼통을 폭발시킬 함수인 ExpBarrel() 함수를 새로 만들어 폭발효과 파티클을 생성해주고 드럼통에 Y 방향으로 힘을 강하게 주어 위로 솟구치게 하고 드럼통을 제거해주었다. // 드럼통 폭파 함수 void ExpBarrel() { // 폭발 효과 파티클 생성 GameObject exp = Instant..
[Unity] 자습서 4장 - 총 발사 로직(Mac)
·
개발/Unity
이번 장에서는 총알 발사 기능을 구현하고 충돌 처리 방법을 알아볼 것이다. 게임에서 총기류 발사는 크게 두 가지 방식이 있는데 Projectile 방식과 RayCasting 방식이다. Projectile 방식은 총알이 물리적으로 발사되어 직접 날아가 적에게 타격을 입히는 방식이다. Raycasting 방식은 레이저 빔과 같은 눈에 보이지 않는 광선을 발사해 적 또는 물체를 검출하는 방식이다(발사와 동시에 피격). 이번 장에서는 Projectile 방식으로 우선 구현하겠다. 총알 모델 삽입 우선 리소스에서 총알 모델을 추가해주고 빈 오브젝트에 자식으로 넣은 뒤 각도를 알맞게 적용해준다. 그 후 총알을 직선 방향으로 나아가게 하는 스크립트를 작성하여 Bullet 오브젝트에 연결해주었다. public clas..
[Unity] 자습서 3장 - 캐릭터 제작(Mac)
·
개발/Unity
이번 장에서는 플레이어 캐릭터를 제작하고 C# 스크립트를 작성하여 이동 로직을 구현할 것이다. 우선 다운받은 Player 게임오브젝트를 하이러키 뷰로 드래그하여 배치한다. 이제 스크립트를 작성하여 이동을 구현할 것인데 유니티는 C# 언어를 지원하기 때문에 visual studio 와 visual studio code를 이용할 수 있다. 필자는 vscode를 이용하여 해보고 싶었지만, 자동완성이 안되고 monosharp 오류 등 이상한 문제가 계속 생겨 머리가 아파져서 그냥 visual studio for mac 을 쓰기로 하였다. (윈도우는 visual studio 2019) 코드 에디터를 선택하였으면 Unity 설정에서도 변경을 해주어야 하는데, [Unity] -> [Preferences] -> [Ex..
[Unity] 자습서 2장 - 게임 스테이지 제작(Mac)
·
개발/Unity
이번 자습에서 실습할 내용은 3인칭 시점 슈팅 게임 개발이다. 책은 '절대 강좌 유니티 - 이재현' 을 바탕으로 실습하였다. 프로젝트 뷰는 게임 개발에 사용하는 모든 리소스가 저장되는 곳으로, 개발을 진행할수록 많은 리소스가 나열된다. 처음부터 체계적으로 관리해야 하기 때문에 종류에 따라 폴더로 분류해서 관리하기 위해 폴더를 생성해 주었다. 실습을 진행하기 위해 MADFINGER Games 사에서 개발한 "ShadowGun:Deadzone" 캐릭터 에셋과 텍스쳐, 하늘 배경 등 여러가지 에셋들을 '에셋 스토어' 에서 다운받는다. 에셋스토어는 상단 메뉴 Window -> Asset Store에서 들어갈 수 있다. 바닥 생성 및 배치 게임의 바닥을 제작하기 위하여 3D object 의 plane을 하나 생성..
[Unity] 자습서 1장 - Unity 시작하기(Mac)
·
개발/Unity
https://unity.com/kr/download#how-get-started 다운로드 지금 Unity를 다운로드하고 전 세계적으로 가장 큰 인기를 누리는 2D/3D 멀티플랫폼 경험 및 게임 제작용 개발 플랫폼을 사용하세요. unity.com 허브 다운로드 위 사이트에서 유니티 허브를 다운 받은 후, 라이선스를 등록하고(Personal) 에디터를 설치한다. 자세한 과정은 이미 구글에 많이 나와있으니 생략하겠다..! 필자는 23년도 2월 기준으로 LTS(장기지원) 버전인 2021.3.18f1 에디터를 설치했다. (글을 쓰는 지금 확인해 보니 3.19f1 으로 벌써 바뀌었지만 상관없다.) 프로젝트 생성 프로젝트 탭에서 우측 상단에 새 프로젝트를 클릭한다. 실습은 3D FPS 게임을 만들 것이기 때문에 3..