본문 바로가기
728x90

GGM13

20230327 - 엔진 - Navigation Navigation Agents - Name : 객체의 이름 - Radius : 객체의 크기 - Height : 객체의 높이 - Step Height : 올라갈수 있는 높이 - Max Slope : 올라갈 수 있는 경사도 Bake Agents와 비슷하지만 실제 맵에 갈 수 있는 곳 그려 Nav Mesh Obstacle - Curve : Nav Mehs에 영향을 줄지 선택하는 것 - Carve only Stationary : 선택하면 움직일때는 Bake하지 않음. 체크할시 연산이 많이 됨 미리 받아둔 오브젝트의 위치로 가게 되는 코드 using UnityEngine; using UnityEngine.AI; public class ChaseNavAgent : MonoBehaviour { [SerializeF.. 2023. 3. 29.
20230320 - 엔진 - Combo, Rolling 우선 AgentMovement에 SetRotation함수를 추가해주고, 매개 변수에 따라 보는 곳이 달라지도록 해주는 코드를 작성한다. public void SetRotation(Vector3 targetPos) { Vector3 dir = targetPos - transform.position; dir.y = 0; transform.rotation = Quaternion.LookRotation(dir); } 이후 AgentInput에서 Rolling시킬 키를 만들어준다 private void UpdateRollingInput() { if (Input.GetButtonDown("Jump")) { OnRollingKeyPress?.Invoke(); } } 이후 AttackState를 수정하여 Rolling.. 2023. 3. 21.
20230315 - 엔진 - RayCast, 애니메이션 우선 Animator창에서 Sub-State Machine을 만들어준다. Animator의 Layers와 비슷한 역할을 한다고 보면 되지만, 1개의 Layer에서 1개의 에니메이션만 실행이 된다고 생각해둬야한다. 약간 비슷한 것들 모아두고 관리 편하게 하는 용도로 쓰면 좋을거 같다. 이후 저번에 만들어둔 AgentAnimator에 아까 만든 Parameter에 대응하기 위해 추가해준다. private readonly int _attackHash = Animator.StringToHash("attack"); private readonly int _isAttackHash = Animator.StringToHash("is_attack"); public event Action OnAnimationEndTrigg.. 2023. 3. 16.
20230313 - 엔진 - 애니메이션, 인풋 바꿈 모델링의 리깅의 Animation Type을 설정해줄 수 있다. Lagacy은 말 그대로 예전에 쓰던 것이다. 가장 빠르기에 쓰기도 하지만 거의 안 쓴다. Generic은 거미나 사족보행 동물 등 이것저것에 쓰인다. 다만 모델링에 맞는 애니메이션이 필요하다. Humanoid은 말 그대로 인간형 모델링을 의미한다. 인간에게 필요한 모든 관절이 있어야 사용할 수 있다. 다음은 애니메이션 Transition에 대한 설명이다. Has Exit Time 토글은 어느시점에서 나가게 하는 것을 킬 것인지 적용시키는 것이다. Exit Time은 특정 위치에서 나가게 하는 것이다. 0.6이면 이 애니메이션이 60% 실행된 후 애니메이션을 변경 시켜주는 것이다. Transition Duration은 애니메이션끼리 변경이 .. 2023. 3. 13.
20230310 - 게임프로그래밍 - 난수 1. 난수 발생 만들기 - 난수의 필요성 = 게임은 항상 상대가 있어야 한다. 그 상대는 적이 될 수도 있고, 어떠한 목표가 될 수도 있다. = 컴퓨터 판단의 기본이 되기 떄문이다. - 난수 생성 함수 1) rnad()함수 = srand()로 인해 생성된 값을 바탕으로 난수를 생성하는 함수이다. = 생성되는 난수의 범위를 지정하는 방법 : rand() % (마지막 값 - 시작 값 + 1) + 시작 값 2) srand() 함수 = 호출할 때 전달 받은 인자를 기반으로 난수를 초기화하는 함수이다. = 정해진 순서가 안 나오도록 여러 개 만들어 매번 다른 난수표를 읽도록 만듦. 이 난수표를 선택하는 동작을 시드(Seed)라고 한다. = 사용할때 srand((unsigbed int) time(NULL); 이런식.. 2023. 3. 10.
20230309 - 네트워크 - 노드 1.2 노드의 특성 5. 멀티 스레드 모델과의 비교 - 싱글 스레드 모델은 에러를 처리하지 못하는 경우 멈춤 = 프로그래밍 난이도 쉽고, CPU, 메모리 자원 적게 사용 - 멀티 스레드 모델은 에러 발생 시 개로운 스레드를 생성하여 극복 = 단 새로운 스레드 생성이나 놀고 있는 스레드 처리에 비용 발생 = 프로그래밍 난이도 어려움 = 스레드 수만큼 자원을 많이 사용함. - 점원: 스레드, 주문: 요청, 서빙: 응답 6. 멀티 스레드의 활용 -노드 14 버전 - 멀티 스레드를 사용할 수 있도록 worker_threads 모듈 도입 - CPU를 많이 사용하는 작업인 경우에 활용 가능 - 멀티 프로세싱만 가능했던 아쉬움을 달래줌. (메인X) 1.3 노드의 역할 1. 서버로서의 노드 - 서버: 네트워크를 통해 .. 2023. 3. 9.
20230309 - 자료구조 - 제어구조, 함수 제어구조 조건문 IF if (조건문) { 명령문 } else if { 명령문 } else { 명령문 } Switch switch (평가식) { case 값1: 명령; break; case 값2: 명령; break; default: //생략가능 코드 } break를 생력하여 break을 만날 때까지 실행한다 열거형 - 프로그래머가 만든 사용자 정의형 - 열거형은 식별자를 값으로 저장할 수 있는 형 - 열거형 선언 : enum 열거형명 { 식별자1, 실별자2, 식별자3, 식별자4 }; - 식별자 1부터 4까지 0에서 3까지 정수 값을 각각 나타내는 상수로 만듦 - 열거형 변수의 선언 : 열거형명 열거변수명; - 열거형 변수에는 열거자들의 값만 대입할 수 있다. - 열거자들을 상수로 관리->열거자들 간의 산술.. 2023. 3. 9.
20230308 - 자료구조 - 기본개념, 문자열 변수 변수 - 데이터를 저장하는 상자, 기억 장소의 이름 int i; //변수 i를 선언 i = 100; //변수 i에 100을 저장 int i = 100; //변수 i을 선언하고 100으로 초기화 int i { 100 }; //int i = 100;과 동일 string s { "hello" }; //string s = "hello";와 동일하다 변수와 상수 변수 - 데이터를 담는 상자 - 변할 수 있는 수 상수 - 값이 한번 정해지면 변경할 필요가 없는 데이터 - 상수표현 방법 (차이는 메모리 할당 여부) 1. 전처리기 문장을 사용 : #define PI 3.242592 2. const 키워드를 사용 : const double PI = 3.141592; (권장) 자료형 - 처리, 저장하고자 하는 자료의.. 2023. 3. 8.
20230308 - 엔진 - 플레이어 움직이게, 쉐이더 움직일 속도를 넣어둘 변수와, rigidbody를 사용 안 하기 때문에 중력의 속도를 넣을 변수를 만들어주고, CharaterController을 넣어둘 변수, 그리고 움직임을 직접적으로 담당할 변수 _movementVelocity를 만들고, 평면 속도를 담아둘 MovementVelocity와, 중력 속도를 담을 _verticalVelocity변수를 만들어준다. [SerializeField] private float _moveSpeed = 8f, _gravity = -9.8f; private CharacterController _characterController; private Vector3 _movementVelocity; public Vector3 MovementVelocity => _movemen.. 2023. 3. 8.
20230307 - 네트워크 - 컴퓨터네트워크 1장 - 1 1 - 1. 노드의 정의 1. 노드의 정의 공식 홈페이지의 설명 - Node.js는 크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임입니다. 노드는 서버가 아닌가요? 서버라는 말이 없네요. - 서버의 역할도 수행할 수 있는 자바스크립트 런타임 - 노드로 자바스크립트로 작성된 서버를 실행 할 수 있음 - 서버 실행을 위해 필요한 http/https/http2 모듈을 제공 2. 런타임 노드 : 자바스크립트 런타임 - 런타임 - 특정 언어로 만든 프로그램들을 실행할 수 있게 해주는 가상 머신(크롬의 V8 엔진 사용)의 상태 - 노트 : 자바스크립트로 만든 프로그램들을 실행할 수 있게 해 줌 - 다른 런타임으로는 웹브라우저(크롬, 엣지, 사파리, 파이어폭스 등)가 있음 - 노드 이전에도 자바스크립트 런.. 2023. 3. 7.
20230306 - 게임프로그래밍 - 숫자 다루기, 케잌 자르 문제 문제 답 #include using namespace std; int main() { int n, rev = 0, sum = 0; cin >> n; while (n != 0) { sum += n % 10; n /= 10; rev = rev * 10 + n % 10; } cout > b >> c >> d; if (a >= c && c = d && d 2023. 3. 7.
20230306 - 엔진 - mesh, Materials URP설정 우클릭 - Create - Rendering - URP Asset (with Universal Renderer) URP에셋을 만들어주고, Project Settings에서 Graphice Scriptable Render Pipeline Settings에서 아까 만든 URP에셋을 넣어준다. Shader - Universal Render Pipeline - Lit을 선택해준다. 대부분 UnLit과 Lit만 사용하게 될 것이다. UnLit은 빛의 효과를 받지 않는 것이고, Lit 빛의 효과를 받는 것이다. 이후 Mesh에 있는 메테리얼 쪽을 보면 여러 설정을 할 수 있다. Base Map은 가장 기본 적인 색을 표현 해주는 것 Metalic Map은 메탈 효과. 즉 광택 효과를 주는 것 Normal.. 2023. 3. 6.
728x90