본문 바로가기

Unity

(67)
플레이어를 움직이는 오브젝트에 동기화 하는법 beforeDirection 변수를 사용하는 이유는 현재 이동 방향과 비교할 수 있다. 플레이어가 움직이는 오브젝트의 움직임을 동기화하기 위함이 변수를 활용하여 현재 이동 방향이 이전과 동일한지 여부를 확인이를 기반으로 플레이어의 Rigidbody의 속도를 업데이트플레이어가 이동하지 않을 때, 즉 moveDirection이 Vector3.zero일 때도 beforeDirection을 통해 이전에 설정된 속도를 유지 움직임이 없는 경우에도 beforeDirection과 비교하여 필요할 때만 속도를 변경
코루틴 Coroutine [ Coroutin 정의 ]① Coroutine 은 Unity 에서 비동기적인 작업을 수행하기 위한 강력한 도구② 주로 사용 되는 곳 : 특정 시간 간격으로 반복되는 작업, 지연된 작업, 연속적인 애니메이션 및 이동 구현③ 일시 중단되고 다시 시작될 수 있는 기능을 제공 코루틴은 얼핏 눈으로 봤을 때 바동기적으로 보이지만, 함수 돌아가는 꼴을 보면 동기적이다 [ Coroutin 특징 ]① 비동기 작업코루틴은 다른 코드와 독립적으로 실행되며, 주로 지연된 작업을 수행하거나 반복적인 작업을 처리 ② 일시 중단 및 재개코루틴은 실행 중에 일시 중단되고 다시 시작될 수 있기 때문에, 코드가 실행되는 동안 대기하거나 지연을 일으킬 수 있음 ③ 쉬운 구현단순히 메서드 앞에 IEnumerator 형식의 리턴 타입을 ..
TryGetComponent ① TryGetComponent 는 Unity 의 'MonoBehaviour' 클래스에서 제공되는 메서드② Bool 값을 갖음③ 특정 타입의 컴퍼넌트를 안전하게 가져올 수 있음④ 컴퍼넌트가 존재하지 않는 경우에도 null을 반환하지 않고 false를 반환⑤ 그러므로 컴퍼넌트를 가져올 수 없는 상황에도 대응할 수 있음
3D 탬플릿 - 스카이박스, 포스모드, 레이캐스트 [ 스카이박스 ]6개의 텍스처로 구성된 큐브 맵 또는 하나의 구체로 텍스처가 매핑된 구체형 스카이박스로 구성① Unity에서는 씬의 배경으로 사용되며, 게임 환경을 확장시키는데 활용② 주로 하늘, 구름, 산 등의 자연적인 배경을 표현하는 데 사용③ 미리 만들어진 스카이박스를 사용하거나 직접 만들어서 Unity에서 적용할 수 있음④ 게임 중에 스카이박스를 동적으로 변경하여 낮과 밤 등의 시간대나 특정 이벤트에 맞게 배경을 변화시킬 수 있음⑤ 성능에 영향을 미치므로 최적화에 주의해야 함스카이박스 - Unity 매뉴얼 (unity3d.com) 스카이박스 - Unity 매뉴얼스카이박스(Skyboxes) 는 전체 씬을 둘러싸는 래퍼로 지오메트리 너머의 월드가 어떻게 생겼는지를 보여줍니다.docs.unity3d.c..
[Input System] SendMessage vs InvokeEvent [ SendMessage ] [ Invoke Unity Events ] [ Invoke C sharp Events ]
델리게이트형 제너릭 변수에다가 함수를 더할 수 있는 이유 Public event Action OnMoveEvent;스샷에서 보이는 것 처럼 OnMoveEvent는 변수인데 함수를 더하고 있다.moveDirection의 값은 0이었지만 direction이 되었다. OnMoveEvent를 실행시킬때 받는 그 direction값 (InputValue)  =  Move메서드의 매개변수 direction 값컨트롤러에서 실행시키전에 제발 좀 데려가달라는 뜻이다. (이걸 이해하기까지가 너무 오래걸렸다)그리고 이 것은 메서드임에 불구하고 변수처럼 사용해서 OnMoveEvent에 더하고 있다.Action은 델리게이트로 함수를 변수처럼 더할 수 있다. 정확히는 사용하기 쉽게 만든 델리게이트형 제너릭 형식이며, Action과 Func 있다반..
오브젝트 조작 및 컴퍼넌트 참조 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는 물리 엔진에 의해 위치와 회전이 결정되지 않습니다. 대신, 스크립트에 의해 직접 제어됩니다. 물리 법칙의 영향을 받지..
2024 AirForce ✈️ 프로젝트 소개 보스가 등장하는 2024 슈팅게임적들에게 포위당한 플레이어를 구해주세요! 💭 기획 의도적이 위에서 내려오는 기존의 갤러그 게임 형태인 방식이 아닌 사방에 적이 출현하도록 하여 보다 더 긴장감을 갖고 몰입할 수 있는 방식으로 기획 ✋ 프로젝트 팀원 별 역할 🕸️ 프로젝트 구조  ⏲️ 프로젝트 수행 절차 ⌨️ 조작 방법 🌟 주요기능 플레이어키보드 A/W/S/D 를 이용하여 캐릭터가 움직입니다캐릭터는 상하좌우 및 대각선으로 움직일 수 있습니다캐릭터는 마우스 위치에 따라 회전합니다 플레이어 공격 기능플레이어의 입력에 따라 발사체를 생성하고 조준하는 로직을 구현Aim 메서드로 조준 방향을 업데이트 하고, Shoot 메서드로 공격을 실행 하게 만들고, AttackSO는 발사체의 속성을 정의..
2D 타운 만들기 ✈️ 프로젝트 소개 Unity 를 이용해 ZEP과 같은 시점의 게임을 모방해 만드는 과제입니다.타일맵을 이용해 배경을 꾸밉니다.기본 UI 들을 활용해 적용하는 연습이 포함됩니다. 🕸️ 프로젝트 구조1. 캐릭터 만들기2. 캐릭터 이동3. 방 만들기4. 카메라 따라가기5. 캐릭터 애니메이션6. 이름 입력 시스템7. 캐릭터 선택 시스템8. 닉네임 변경 🕹️ 플레이 영상 🤝 피드백
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로 설정하는 이유는 다음과 같습니다:초기화이 값은 게..