본문 바로가기

게임 프로그래밍/유니티 활용38

[유니티 활용] Animator 를 이용한 애니메이션 속도 조절 이번 글에서는 유니티 Animator 의 파라미터를 이용해 특정 애니메이션의 속도를 조절하는 법에 대해 알아보도록 하겠습니다. 특정 캐릭터의 공격 모션을 다음과 같이 만든다고 가정해 봅니다. 공격 시작부터 실제 공격하기전까지의 준비 동작은 느리게 진행 공격 준비 동작이 끝나고 실제 공격은 빠르게 이루어짐 애니메이션을 직접 제작한다면 처음부터 위의 특성을 고려해 만들면 됩니다. 하지만 직접 만든 게 아닌 경우에는 어떻게 해야 할까요? 다행히 유니티는 Animator 에서 파라미터를 지원해주고 이를 애니메이션에 적용할 수 있는 방법을 제공해 줍니다. 지금부터 이것을 활용해서 위에선 언급한 공격 모션의 속도를 조절하는 방법에 대해 알아보도록 하겠습니다. ▶ 슬라임 애니메이터 설정 이번 글에서도 제가 예제로 많.. 2023. 4. 26.
[유니티 활용] ScriptableObject 를 이용한 Item Drop Table 만들기 이번 글에서는 몬스터 사냥, 상자 열기, 스테이지 클리어 보상 등 거의 모든 게임에서 필요한 아이템 드랍을 ScriptableObject 를 이용해 구현하는 방법에 대해 알아보도록 하겠습니다. ▶ Item 정의 ScriptableObject 를 이용해 다음과 같이 Item 정보를 정의해 줍니다. using System.Collections; using System.Collections.Generic; using UnityEngine; [CreateAssetMenu] public class SOItem : ScriptableObject { public string itemName; public int level; [System.Serializable] public struct STAT { public st.. 2023. 4. 25.
[유니티 활용] ScriptableObject를 이용한 Data 관리 예제 - 몬스터 ScriptableObject 는 데이터 관리 측면에서 굉장히 유용하게 사용할 수 있습니다. 이 글에서는 ScriptableObject 를 이용해 몬스터를 정의하고 객체를 만드는 방법에 대한 예제를 다뤄보도록 하겠습니다. ▶ 몬스터 ScriptableObject 작성 몬스터의 기본적인 속성과 관련된 정보는 다음과 같이 만들 수 있습니다. using System.Collections; using System.Collections.Generic; using UnityEngine; [CreateAssetMenu] public class SOMonster : ScriptableObject { public int str; // strenth / 힘 public int dex; // dexterity / 민첩 pu.. 2023. 4. 24.
Coroutine 과 UniTask 비교 예제 UniTask 는 async 와 await 를 유니티에서 더 사용하기 편리하도록 만든 통합 패키지입니다. UniTask 는 Coroutine 에 비해 메모리 사용량, 성능, try-catch 사용 가능 및 return 을 사용할 수 있어서 Coroutine 대신 UniTask 를 이용하도록 권장하고 있는 상황입니다. 이 글에서는 같은 기능을 Coroutine 과 UniTask 를 이용해 각각 구현할 때 어떤 차이가 있는지에 대해서 알아보도록 하겠습니다. ▶ 설치 UniTask 는 기본으로 지원되는 기능이 아니기 때문에 Package Manager 를 이용해 설치해 줘야 합니다. Package Manager 를 실행하고 위와 같이 [Add package from git URL...] 을 선택하고 나타나는 .. 2023. 1. 21.
[유니티 활용] ParticleSystem 으로 초간단 총알 패턴 만들기 유니티에서 Particle System 은 폭발, 모닥불, 번개 및 각종 마법 등 여러 효과를 만드는데 아주 유용하게 사용되는 기능입니다. 이 글에서는 Particle System 을 이용하여 탄막 슈팅게임에서 볼 수 있는 탄막 효과를 아주 간단하게 만드는 방법에 대해서 알아보도록 하겠습니다. ▶ 공통 Particle System 의 Transform 의 Position 과 Rotation 은 모두 0으로 설정하고 Start Size 는 0.2로 합니다. ▶ 단방향 발사 총알을 한 방향으로 주기적으로 발사합니다. ParticleSystem 의 Emission 과 Shape 을 다음과 같이 설정합니다. ● 발사 주기조절: Emission의 Rate over Time 값 변경 ● 방향: Shape의 Roat.. 2023. 1. 18.
[유니티 활용] 액션 RPG 스타일의 실시간 전투 구현하기 지금까지 캐릭터의 이동과 몬스터의 AI 및 각 상황에 맞는 애니메이션을 적용하는 방법에 대해 알아보았습니다. [유니티 활용] StateMachine 을 활용한 3D 몬스터 AI 구현 아래에 링크한 이전 글에서는 유니티에서 제공하는 NavMeshAgent 를 이용해 몬스터가 플레이어를 따라다니도록 했습니다. 이번 글에서는 한단계 더 나아가서 처음엔 가만히 있다가 플레이어가 근 ugames.tistory.com 위의 작업 내용을 토대로 액션 RPG 스타일의 실시간 근접 전투를 구현하는 방법에 대해 알아보도록 하겠습니다. 현 시점까지 구현한 내용은 위에 링크한 글로 이동하시면 아래쪽에 unitypackage 다운로드와 필수 에셋 링크가 있으니 다운로드 받아 사용하시면 됩니다. ▶ 플레이어 공격 만들기 게임에서.. 2023. 1. 14.