함수 실행 전 애니매이션을 넣고 싶을때 Animation clip을 이용해서 죽기전 혹은 스킬 시전 모션을 이쁘게 꾸며보자!!
·
Unity
앞으로 쓸 내용은.... 해당 방법을 2시간째 못찾다가 어이없이 찾자, 굉장히 짜증나는 상황에서.... 다음엔 이런 실수 하지말기 위해... 적어봅니다..... 하 늬들은 이런거 피지마라...비흡연자이지만 이런 느낌과 함께... 가봅시다! 보통 몹들을 죽었을 때 Destroy()로 완전 없애버리지 않고 오브젝트 풀링으로 비활성화 시켜서 관리할 것이다! 그래서 그냥 비활성화 시키면 너무 게임의 재미 요소가 사라지니 이렇게 죽는 모션을 1초정도 보여주고 비활성화 시키면 적을 처치했다! 라는 느낌을 게임적으로 줄 수 있을것이다! 즉 SetActive(false) 함수 발생 이전에 애니매이션을 실행시키면 더 좋다는 뜻이다!! 이런 느낌으로 마법 발사~ 같은 FireBall() 함수 이전에도 시전 애니매이..
[Unity] InputSystem으로 플레이어를 mz하게 이동시키자!
·
Unity
여태까지 플레이어를 wasd로 움직였일 때는 Edit -> Project Settings -> Input Manager -> Axes 에 있는 내용대로 inputVec.x = Input.GetAxisRaw("Horizontal");inputVec.y = Input.GetAxisRaw("Vertical"); 이런식으로 받아와서 속도와 시간을 곱해줘서 이동시키곤 했다..!!!! 하지만!! 이건 구식 방법이다! 특히 싱글플레이에선 Input System을 이용하면 이동을 굉장히 쉽게 구현할 수 있다.! 화면 상단의 Window -> Package Manager 에 가서 Pakages를 Uinity Registry 로 설정해서 Input System을 다운받아주자! 다운 받으면 해당 화면이 뜬다 버튼을 이것저..
[Design Pattern] State Pattern, 유니티 애니매이션에 자주 쓰이는 state 디자인 패턴에 대해서 알아보자!
·
DesignPattern
유니티에서 뛰기 점프하기 장전하기 쏘기 등등 상황에 걸맞는 멋있는 애니매이션을 쓰고자 노력을 하다보면 상황을 제한해야하기도, 추가해야하기도 한다. 그럴땐 보통 드는 생각은 bool값을 설정하여 if else문에 && || 로 조건을 걸어 해당 애니매이션을 재생하곤 한다.bool isFalling;bool isJumping;bool isSkillCasting;bool isSkillChanneling;if(isJumping){}else{ if(isSkillChanneling && isFalling) { } else { if(isSkillCasting) { } }} 위와 같이 상황이 적으면 괜찮겠지만 와우 캐릭터 하나만 해도 여러가지 감정표..
[Unity] Layer을 이용해 충돌을 따로 관리하자 (귀찮게 bool값 설정이 불필요해진다!)
·
Unity
Unity Physics Layer 설정으로 충돌 문제 해결하기Unity에서 게임을 개발할 때 오브젝트 간의 충돌은 필수적인 요소입니다. 그러나 개발을 하다 보면 불필요한 충돌로 인해 예기치 않은 문제들이 발생할 수 있습니다. 이런 충돌 문제는 코드에서 개별적으로 해결할 수도 있지만, Unity의 Physics Layer 기능을 사용하면 더욱 간단하고 효율적으로 관리할 수 있습니다. 이번 글에서는 충돌 관련 보편적인 문제와 Physics Layer를 사용해 해결하는 방법에 대해 설명하겠습니다.1. 충돌 문제의 일반적인 예시개발 중 흔히 겪는 충돌 문제 중 하나는 특정 오브젝트가 의도하지 않은 오브젝트와 충돌하거나 상호작용을 하는 경우입니다. 예를 들어, 보스 캐릭터의 특정 공격이나 미사일이 플레이어의 충..
[Unity] 유니티에서 Text를 쓸 때 주의해야할 점! TextMeshPro
·
Unity
TextMeshPro는 Unity에서 고품질의 텍스트 렌더링을 제공하는 강력한 도구입니다. TextMeshPro를 사용하기 위해 필요한 라이브러리 임포트와 컴포넌트 선언 시 주의할 점을 아래와 같이 정리했습니다. 그냥 Text는 이제 레거시이고 이젠 다 TextMeshPro를 import해서 쓰라고 아예 유니티엔진에서 말해줍니다. 1. TextMeshPro 사용 시 필요한 import 문TextMeshPro를 스크립트에서 사용하려면 TMPro 네임스페이스를 import해야 합니다. 이를 위해 코드의 최상단에 다음 코드를 추가합니다:using TMPro;이 구문을 통해 TextMeshPro의 클래스와 메서드에 접근할 수 있습니다.2. TextMeshPro 선언 시 주의할 점TextMeshPro 컴포넌트: ..
[Unity] 3D에서 UI를 만들 때 꼭 알아야하는 필수 컴포넌트 RectTransform!
·
Unity
RectTransform: Unity UI 요소의 핵심 컴포넌트Unity에서 UI 요소를 다룰 때, RectTransform은 매우 중요한 컴포넌트입니다. Transform 컴포넌트의 확장된 버전으로, 2D 공간에서 UI 요소의 위치, 크기, 회전 등을 관리하는 데 사용됩니다. 이번 포스트에서는 RectTransform의 주요 기능과 사용법을 정리하겠습니다.1. RectTransform의 주요 기능포지션(Position)UI 요소의 위치를 설정합니다. 일반 Transform과 비슷하지만, UI 공간 좌표를 기준으로 작동합니다.앵커(Anchor)**** 이걸로 초기값 설정해야 해상도 문제없이 UI가 깔끔해짐UI 요소의 부모와의 상대적인 위치를 지정합니다. 창 크기가 변경될 때 UI 요소의 위치가 자동으로 ..
[Unity] 유니티 코루틴(Coroutine) 깊고 간결하게 정리!
·
Unity
코루틴은 Unity에서 비동기 작업을 처리할 때 유용한 기능입니다. 게임 개발 중 특정 시간 간격을 두고 연속 작업을 처리하거나, 애니메이션, 대기 시간 등을 추가하는 데 자주 사용됩니다. 이번 글에서는 코루틴의 기본 사용법, 중요 함수, 예시를 통해 코루틴의 사용법을 자세히 설명합니다.1. 코루틴이란?Unity에서 코루틴(Coroutine)은 특정 조건이나 시간 동안 코드의 실행을 일시 정지했다가 다시 실행할 수 있는 함수입니다. IEnumerator 타입을 반환하며, yield 키워드를 사용해 특정 조건이 만족될 때까지 대기하거나, 다음 프레임에서 다시 실행되도록 설정할 수 있습니다.코루틴의 가장 큰 장점은 프레임의 흐름을 멈추지 않으면서도 반복적으로 실행 가능한 작업을 수행할 수 있다는 것입니다. ..
[Unity] Scale의 비밀 부모-자식 관계의 스케일 상속은 각 계층에서 곱셈 방식으로 적용
·
Unity
최종 부모 오브젝트의 스케일이 (1, 1, 1)이라도 중간 부모 오브젝트의 스케일이 (3, 3, 3)이면 결과적으로 최종 스케일에 영향을 미칩니다.예를 들어, 아래와 같은 구조를 보겠습니다:최종 부모 오브젝트 : (1, 1, 1)로 설정중간 부모 오브젝트 : (3, 3, 3)로 설정자식 오브젝트 : (1, 1, 1)로 설정이 구조에서 최종 Mesh Object의 스케일은 각 계층의 스케일 값을 곱하여 계산됩니다:(1,1,1)×(3,3,3)×(1,1,1)=(3,3,3)(1, 1, 1) \times (3, 3, 3) \times (1, 1, 1) = (3, 3, 3)(1,1,1)×(3,3,3)×(1,1,1)=(3,3,3)따라서, 최종 부모(Enemy D)의 스케일이 (1, 1, 1)이라도, 중간 부모(Gam..
[Unity] 유니티에서 물리 관련 함수를 FixedUpdate()문에 쓰는 이유
·
Unity
물리 엔진과의 동기화가 필요한 물리적 감지나 판정을 할 때는 FixedUpdate를 사용하는 것이 일반적입니다. Unity에서는 물리 연산이나 충돌 판정을 FixedUpdate에서 실행하는 것이 권장되며, 몇 가지 주요 이유는 다음과 같습니다.1. 물리 엔진과의 동기화Unity의 물리 연산은 FixedUpdate 주기로 실행됩니다. 물리적 판정(Physics.SphereCastAll)을 Update에서 처리할 경우, 프레임마다 호출되어 물리 계산과 타이밍이 어긋날 수 있습니다. FixedUpdate에 두면 물리 엔진의 계산 주기와 맞춰져 보다 안정적인 감지가 이루어집니다.2. 일관된 타이밍 유지Update는 프레임 속도에 따라 실행되지만, FixedUpdate는 일정한 시간 간격으로 실행됩니다. Targ..
[Unity] 기본 호출 함수의 생명주기 Start() vs Awake()
·
Unity
Awake와 Start는 둘 다 Unity에서 오브젝트가 생성될 때 한 번만 호출되는 초기화 메서드지만, 호출되는 시점에 차이가 있습니다.1. Awake호출 시점: 게임 오브젝트가 활성화되자마자 가장 먼저 호출됩니다. 다른 스크립트의 Awake나 OnEnable 호출 전에 실행됩니다.용도: 오브젝트의 기본적인 초기화 작업을 수행하는 데 사용됩니다. 주로 다른 컴포넌트나 스크립트와의 의존 관계 없이 초기화해야 할 경우에 적합합니다.특징: 다른 스크립트가 비활성화되어 있어도 Awake는 실행됩니다.2. Start호출 시점: 모든 Awake 메서드가 호출된 후, 첫 프레임 직전에 한 번 호출됩니다.용도: 다른 오브젝트나 컴포넌트가 초기화된 이후에 설정해야 하는 작업에 사용됩니다. 예를 들어, 다른 컴포넌트나 ..