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