본문 바로가기

Unity/Knowledge

(58)
오브젝트 조작 및 컴퍼넌트 참조 Public class Csharp : MonoBehaviour{            public Test test;            public Test[] testArr;           public GameObject test;            public Transform tf; void Awake [or] Start (){           // 오브젝트 조작 - Find           test = FindObjectOfType();                          // 오브젝트가 켜져있을 때,  자료형으로 검색             testArr = FindObjectsOfType();                   // 복수형 오브젝트           test =..
Rigidbody2D - Body Type Dynamic설명: Dynamic 타입의 Rigidbody2D는 물리 엔진에 의해 완전히 제어됩니다. 이는 중력, 충돌, 힘, 토크 등에 영향을 받음을 의미합니다.특징:물리 법칙에 따라 움직입니다.중력의 영향을 받습니다.다른 객체와 충돌 시 충돌 반응을 합니다.AddForce, AddTorque 등의 함수를 사용하여 힘이나 토크를 적용할 수 있습니다.외부 힘(예: 바람, 폭발 등)과 상호작용합니다.용도:주로 물리적으로 시뮬레이션되어야 하는 객체에 사용됩니다. 예를 들어, 플레이어 캐릭터, 적, 이동 가능한 오브젝트 등.Kinematic설명: Kinematic 타입의 Rigidbody2D는 물리 엔진에 의해 위치와 회전이 결정되지 않습니다. 대신, 스크립트에 의해 직접 제어됩니다. 물리 법칙의 영향을 받지..
Vector, 몬스터가 플레이어를 추격 하는 로직 및 정규화 벡터 = 길이 + 방향길이 = 크기 = 속도 몬스터가 플레이어에게 향하게 하려면? 플레이어가 마우스를 바라보려면? [ 벡터에 곱셈을 활용 하는 경우 ]곱셈을 사용해도 어짜피 방향은 동일하다. 속도를 조절하고 싶을 때 사용 [ 정규화 ]몬스터와 플레이어가 있다고 가정한다면몬스터가 플레이어를 따라가고 싶을 때 : P좌표 - M좌표 그런데 몬스터가 플레이어에게 가까워 진다면자연스럽게 벡터의 길이가 짧아지므로 몹의 이속이 빨라지며반대로 멀리 위치할 수록 벡터의 길이가 길어지므로 이속이 느려진다. 이 것을 방지하기 위해서 몬스터의 이속을 일정하게 유지 할 수 있도록 정규화를 사용한다즉,크기는 그냥 일정하게 하도록 해서 관심이 없는 상태이며 방향에만 관심이 있는 경우에normalized를 사용한다. [ 방향에는 관..
float.MaxValue; Time.deltaTime? private float timeSinceLastAttack = float.MaxValue; 게임 개발이나 다른 실시간 시스템에서 흔히 사용하는 패턴 중 하나로, 다음 공격까지의 대기 시간을 나타내기 위해 사용됩니다. [ 코드 분석 ]private: 이 변수는 클래스 내부에서만 접근할 수 있습니다.float timeSinceLastAttack: 공격 이후 경과 시간을 저장하는 float 타입의 변수float.MaxValue: float 타입이 가질 수 있는 가장 큰 값으로, 이는 약 3.40282347E+38 [ 의미와 목적 ]이 변수는 게임에서 플레이어 또는 NPC의 공격 간의 시간을 추적하는 데 사용될 수 있습니다.초기값을 float.MaxValue로 설정하는 이유는 다음과 같습니다:초기화이 값은 게..
Prefes와 Static 차이점 일반적으로 PlayerPrefs는 게임 실행 중에 데이터를 저장하고 불러오는데 사용됩니다.하지만 PlayerPrefs는 게임이 종료되고 다시 시작될 때까지만 데이터를 유지하며,게임을 다시 시작하면 이전에 저장한 데이터가 삭제될 수 있습니다.또한 PlayerPrefs는 데이터의 양에 제한이 있고, 보안상의 이유로 민감한 정보에는 사용되지 않는 것이 좋습니다. 반면에 static 변수를 사용하면 게임 실행 중에 데이터를 메모리에 유지할 수 있습니다.이는 게임 실행 중에 언제든지 데이터를 불러오거나 변경할 수 있고, 게임이 종료되더라도 데이터가 유지됩니다.그러나 static 변수를 오랫동안 유지하는 것은 메모리 사용량을 증가시킬 수 있으며, 게임의 성능에 영향을 줄 수 있습니다.따라서 데이터의 유지 기간과 보..
공격 시스템 구축 [ 프리팹 ] Unity 게임 엔진에서 사용되는 게임 오브젝트를  재사용 가능하고 관리하기 쉽게 만들기 위한 템플릿프리팹의 변경사항은 모든 인스턴스에 즉시 반영되므로, 일관성을 유지하고 일괄적인 업데이트를 쉽게 할 수 있다.프리팹은 레벨 디자인, 재사용 가능한 게임 요소 (캐릭터, 아이템, 장애물 등) 의 생성, 프로토타이핑 등에 주로 사용 [ Instantiate 함수 ]Unity에서 제공하는 메소드로, 주어진 원본 개체의 복사본을 새로 생성하고 이를 반환한다이 함수는 주로 게임 오브젝트, 즉 캐릭터, 아이템, 프로젝타일 등을 동적으로 게임 세계에 추가할 때 사용원본 개체의 모든 컴포넌트와 그 프로퍼티를 복사하여 새 게임 오브젝트를 생성이 함수를 통해 생성된 게임 오브젝트는 독립적이며, 원본 개체에 대..
조준(Aim) 시스템 구축 마우스를 바라보는 방향으로 무기를 조준해보기 [ 쿼터니언(Quaternion) ]유니티 인스펙터 창에서 나오는 회전은 Vector3로 표현되며, 이를 오일러각(Euler Angle) 이라고 한다하지만, 시중의 많은 3D 소프트웨어는 내부적으로 쿼터니언을 사용쿼터니언을 사용할 시 짐벌 락(Gimbal Lock) 문제를 피할 수 있음짐벌락 ㅡ> 극단적인 각도로 회전할 경우 한 축으로의 회전을 잃어버리는 것https://youtu.be/yxMQKsab5TQ?si=mbRGEn3Gtn429ntB수학적으로는 4차원 복소수를 이용한 회전 표현으로 (x, y, z, w) 형태로 표현직접 x, y, z, w값을 조정하지 말 것직접 값을 변경하거나 계산하는 대신, Unity의 내장 함수를 사용하는 것이 좋다.(예: Qua..
충돌 처리와 맵 구성 [ 충돌 ] Collider 게임 오브젝트에 물리적 형태를 부여충돌 감지를 가능BoxCollider는 사각형, SphereCollider는 구형, MeshCollider는 복잡한 메시 형태  Rigidbody 게임 오브젝트에 물리 법칙을 적용Rigidbody가 있는 오브젝트는 중력에 영향을 받고, 힘과 토크를 통해 움직임충돌하려면 최소 한 쪽에는 Rigidbody 컴포넌트가 붙어있어야 Collider와 충돌할 수 있음Trigger 충돌도 Rigidbody 필요한데, 움직이는 쪽이 물리 시뮬레이션을 하면서 충돌 체크를 하기 때문  충돌 발생 시 Unity는 OnCollisionEnter, OnCollisionStay, OnCollisionExit 등의 이벤트를 발생 가능🚧 주의!  2D는 각각 뒤에 2D..
구조와 설계 샘플 [ InputManager의 문제점 ] 그러므로 우리는 New Input System 을 활용할 것이다 [ 설계 샘플 - 옵저버 패턴 ] [ 기본 설계 ]TopDownController : 캐릭터, 몬스터의 전반적인 행동 정의PlayerInputController : 플레이어들의 키보드 입력이나 마우스 클릭TopDownMovement : 이동해야할 때 이 것을 호출함 [ 입력 받을 준비하기 ] [ 플레이어 생성하기 ] TopDownController.cs캐릭터와 몬스터의 공통적인 기능을 넣어놓는 곳 PlayerInputController.cs TopDownMovement.cs
핵심 기능 소개 [ PPU ]Pixels Per Unit 스프라이트의 픽셀 수와 해당 스프라이트가 게임 세계에서 차지하는 공간의 관계를 설명합니다.예를 들어, PPU가 100이라면 스프라이트의 100픽셀은 게임 세계에서 1 유니티 단위를 나타냅니다. PPU 값이 클수록 스프라이트는 작아집니다.이는 더 많은 픽셀이 동일한 게임 세계의 공간에 매핑되기 때문입니다. PPU 값은 물리 시뮬레이션에 영향을 미칩니다.높은 PPU 값은 더 작은 스프라이트를 생성하므로, 이는 더 높은 해상도의 물리 시뮬레이션을 가능하게 합니다. 높은 PPU 값은 더 많은 연산을 필요로 합니다.이는 성능에 영향을 미칠 수 있습니다.따라서, 필요한 만큼의 PPU 값을 설정하는 것이 중요합니다. 모든 스프라이트에 대해 일관된 PPU 값을 사용하는 것이 좋..
이벤트 함수 실행 순서 및 특징 Monobehaviour를 상속받는 클래스들은 유니티 이벤트 함수를 활용게임 오브젝트의 생명 주기 동안 호출되는 특정한 메서드들의 순서와 타이밍게임 오브젝트의 생성, 초기화, 업데이트, 파괴 등과 관련된 작업을 수행  Awake: 게임 오브젝트가 생성될 때 호출되는 메서드입니다. 주로 초기화 작업이 수행됩니다.OnEnable: 게임 오브젝트가 활성화될 때 호출되는 메서드입니다.Start: 게임 오브젝트가 활성화되어 게임 루프가 시작될 때 호출되는 메서드입니다. 초기 설정 및 시작 작업을 수행합니다.FixedUpdate: 물리 엔진 업데이트 시 호출되는 메서드입니다. 물리적인 시뮬레이션에 관련된 작업을 처리할 때 사용됩니다.Update: 매 프레임마다 호출되는 메서드로, 게임 로직의 주요 업데이트가 이루어..
테스팅 하는 방법 (빌드)