- [ 카테고리 없음 ]유니티 게임개발 - 게임 개발 심화 팀 과제 #12023-10-13 21:21:40우리 팀은 여러가지 미니 게임들을 합친 프로젝트를 기획하였고 나는 그 중 마리오 파티의 빙빙시계를 모티브로 간단한 생존 게임을 제작하였다. 상단 회전 장애물은 일정한 시간마다 회전 속도를 계속 증가시키고 회전 방향을 바꾼다. 플레이어와 충돌 시 게임이 종료된다. 플레이어 세부적인 애니메이션은 공통 기능으로 추후에 추가할 예정이다. public class RotateObjectT : MonoBehaviour { [SerializeField] private float initialRotationSpeed; [SerializeField] private float accelerationRate; [SerializeField] private float phaseDuration; private float timeI..
- [ 카테고리 없음 ]유니티 게임 개발 - Blend Tree2023-10-12 21:18:56블렌드 트리는 여러 개의 애니메이션 상태를 조절하는데 사용되는 도구입니다. 애니메이션의 부드러운 전환과 다양한 입력 조건을 처리하는데 유용합니다. 블렌드 트리를 만드려면 Animator 컴포넌트를 사용하여 트리를 연결하고 모션을 추가합니다. 파라미터를 통해 제어가 가능하며 코드를 통해 동작을 변경할 때 사용합니다. 2D 블렌드 트릴는 두개의 파라미터 값을 기반으로 애니메이션을 혼합하는 노드로 이동, 회전과 같은 입력에 사용됩니다. 1D 블렌드 트리는 하나의 파라미터 값을 기반으로 애니메이션을 혼합하는 노드로 속도, 점프 같은 입력에 사용됩니다. 블렌드 트리를 통해 애니메이션 전환의 가중치와 속도를 조절하여 원하는 동작을 자연스럽게 만들 수 있습니다. using System.Collections; usin..
- [ 카테고리 없음 ]유니티 게임개발 - 시네머신2023-10-06 21:11:45시네머신은 유니티의 카메라 시스템을 향상시키기 위한 도구로 게임 내 카메라 워크를 관리하고 다양한 효과를 쉽게 구현할 수 있도록 도와줌. virtual 카메라와 main 카메라가 연동됨. follow를 통해 카메라가 오브젝트를 따라다님. Body 섹션에서 damping을 통해 카메라 이동 따라다님의 부드러움을 조정할 수있음. dead zone을 통해 카메라를 특정한 영역에 고정시킬 수 있음. Noise 섹션에서 카메라를 흔들리게 하거나 하는 효과를 줄 수있음. 스크립트를 통해 다음과 같이 간단하게 제어할 수도 있음. using UnityEngine; using Cinemachine; public class CameraController : MonoBehaviour { public Transform tar..
- [ 카테고리 없음 ]유니티 게임개발 - 메모리 구조2023-10-05 21:47:36CPU: 컴퓨터의 뇌, 프로세서, RAM에 저장된 데이터 메모리 연산처리 RAM: 컴퓨터의 최근 기억, 메모리, CPU가 연산처리할 데이터가 저장되는 곳 코드 영역: 프로그램의 실행 코드를 저장하는 곳. C# 스크립트 같은 실행코드가 포함됨. 데이터 영역: 초기화된 전역 및 정적 변수, 상수가 저장됨. 힙 영역: 동적으로 할당된 메모리를 관리하는데 사용. 클래스는 참조 형식으로 되어있음. 참조 형식의 변수는 스택 영역에 데이터의 주소, 힙 영역에 데이터의 값을 저장하여 동시에 사용함. C#에서는 new 연산자로 객체를 동적 생성. using System; class Program { class MyClass { public int Value; } static void Main() { MyClass obj..
- [ 카테고리 없음 ]유니티 게임개발 - 팀 과제 회고2023-10-04 21:07:39컴포넌트 패턴을 중심으로 전반적인 게임을 설계하였습니다. 처음에는 익숙하지 않은 부분들이 있었지만 스크립트 간 재사용성 측면에서의 큰 이점을 체감하였고 추후에도 적극적으로 사용할 예정입니다. 특별하게 컴포넌트 패턴의 단점으로는 디버깅 작업에서 난이도가 있었다는 점입니다. 제가 구현한 몬스터 파트에 팀원분이 구현한 플레이어 전투 파트의 스크립트를 최대한 재사용 하고자 하면서 타인의 코드를 읽고 이해하는데 많은 시간을 투자하였습니다. 코드 읽기에 대한 많은 훈련이 된 프로젝트였습니다. 이번 프로젝트를 통해 새로 활용한 디자인 패턴으로 상태 패턴이 있었습니다. 최종보스인 마녀의 경우, 복잡한 동작 패턴을 관리하고 상태 간 전환 동작을 구조화하기 위해 상태 패턴을 사용하여 구현하였습니다. 또한 이를 통해 애니메..
- [ 카테고리 없음 ]유니티 게임 개발 - 팀 과제#12023-09-27 20:06:03적 및 보스 구현을 진행하였고 각각 근접 공격, 원거리 공격, 순간이동, 원 공전과 보스는 다양한 적들을 소환하는 스킬을 가지고 있다. 체력 시스템과 체력바 시스템을 구현 후 전체적인 리펙터링을 진행할 예정이다. 근접 공격 적 using Components.Action; using UnityEngine; public class MeleeEnemyController : EnemyController { [SerializeField] [Range(0f, 100f)] private float followRange; [SerializeField] private string targetTag = "Player"; private bool _isCollidingWithTarget; [SerializeField] pri..
- [ 카테고리 없음 ]유니티 게임개발 - 상태 머신2023-09-25 23:49:53상태 머신 패턴은 게임 오브젝트의 상태를 정의하고 관리하기 위해 사용된다. 상태머신은 오브젝트의 행동을 다양한 상태로 분할하고 각 상태에서 어떤 동작이 수행될지를 결정한다. 예를 들어 플레이어 캐릭터는 이동 상태, 공격 상태, 점프 상태 등 다양한 상태로 구성될 수 있고 각각 해당 상태에 맞는 로직이 돌아간다. using UnityEngine; public class PlayerStateMachine : MonoBehaviour { private enum PlayerState { Moving, Stopped } private PlayerState currentState; void Start() { //초기 상태 SetState(PlayerState.Stopped); } void Update() { // ..
- [ 카테고리 없음 ]유니티 게임 개발 - 2D애니메이션2023-09-22 21:04:08플랫포머 게임을 만들어보면서 2D애니메이션 실습을 진행하였다. 시작하기 전에 준비해야할 것은 애니메이션을 만들 재료인 스프라이트다. 하지만 보통 스프라이트 리소스는 여러 이미지들이 합쳐진 스프라이트 시트로 이루어져있다. 그러므로 바로 사용할 수 있도록 각각의 스프라이트로 쪼개고 위치를 맞추는 작업을 먼저 진행해야 한다. 1) 스프라이트 시트의 Sprite Mode를 Multiple로 변경한다. 2) Sprite Editor에 들어가서 크기에 맞춰 Slice를 한다. 나는 Grid By Cell Size 옵션으로 크기를 따로 지정하였다. 3) 스프라이트 시트의 크기를 Pixel Per Unit을 조절하여 세팅한다. 4) 스프라이트가 흐리게 보이는 경우, Filter Mode는 Point(no filter)..