gamemusttoy의 등록된 링크

 gamemusttoy로 등록된 네이버 블로그 포스트 수는 14건입니다.

Unity 확장 메서드 + 제작한 Util 소개 [내부링크]

Extenstion Method(확장 메서드):기존 내장 되어있는 소스를 수정 안해도 사용자 정의 메서드로 추가하는 것으로 static Class에서만 정의 가능하며, static 메서드로 정의한다.(this 키워드를 첫번째 파라미터로 두어, 어떤 것을 수정 할지 설정) 제작한 Utill 소개 https://github.com/khjtoy/ExtensionMethods/blob/main/ExtensionMethods.cs ExtensionMethods/ExtensionMethods.cs at main · khjtoy/ExtensionMethods Contribute to khjtoy/ExtensionMethods development by creating an account on GitHub. github.com 위 github 링크를 통해 직접 작성한 ExtenstionMethods를 공유합니다. (2022.11.07 기준, 추가되면 이 블로그의 대한 설명을 추가 할 예정입니다.)

C# 참조해야 할 때 사용할 수 있는 ref와 out [내부링크]

유니티로 게임을 개발하고 있던 중 함수 매개변수를 참조형 변수로 사용을 했어야 했습니다.. 저는 평소 C++에서 사용하는 참조형 변수(&)를 사용하여 문제를 해결하려 했습니다. class Program { static void Fun(int& num) { num = 3; } static void Main(string[] args) { int a = 5; Fun(a); Console.WriteLine(a); } } 위 코드처럼 쓰니 프로그램이 정상적으로 작동하지 못하고 오류가 발생했습니다. 그래서 저는 C#의 참조형 변수를 선언하는 방법을 찾아보니 ref 또는 out을 사용하면 된다고 하였습니다. ref와out의 공통점 class Program { static void Fun(ref int num) { num = 3; } static void Main(string[] args) { int a = 5; Fun(ref a); Console.WriteLine(a); } } class Pro

01.[Unity AI]행위 템플릿 만들기 + 라이프 사이클 [내부링크]

AI들에 대한 행위들을 만들기 전에 모듈식 시스템을 구축하기 위해 행위 템플릿 작성이 필요합니다. using System.Collections; using System.Collections.Generic; using UnityEngine; /// <summary> /// 에이전트의 이동 및 회전을 저장하기 위한 사용자 정의 데이터 /// </summary> public class Steering { public float angular; public Vector3 linear; public Steering() { angular = 0.0f; linear = new Vector3(); } } Steering Class는 Agent의 이동 및 회전을 저장하기 위한 사용자 데이터 역할을 합니다. 생성자를 선언하였기 때문에 이 Class를 부르면 생성자가 실행되어 angular과 linear를 실행합니다. using System.Collections; using System.Collecti

02.[Unity AI]추격과 회피 행위 구현하기 [내부링크]

자 이제 행위를 구현 해볼 것이다. 먼저 해볼 행위는 추격과 회피이다. 추격과 회피는 가장 기본적인 행위에 의존 하고 추후 확장을 할 수 있기 때문입니다. 먼저 Seek(추격) 코드를 시작하겠습니다. using System.Collections; using System.Collections.Generic; using UnityEngine; /// <summary> /// 추격하는 Class /// </summary> public class Seek : AgentBehaviour { public override Steering GetSteering() { Steering steering = new Steering(); steering.linear = target.transform.position - transform.position; steering.linear.Normalize(); //방향만 남기기 steering.linear = steering.linear * agent.maxA

02확장.[Unity AI]물리적으로 올바르게 에이전트 조정하기 [내부링크]

https://blog.naver.com/gamemusttoy/222680083257 02.[Unity AI]추격과 회피 행위 구현하기 자 이제 행위를 구현 해볼 것이다. 먼저 해볼 행위는 추격과 회피이다. 추격과 회피는 가장 기본적인 행위... blog.naver.com 앞서 02에서 추격과 회피를 구현하였습니다. 다만 AI들이 물리적으로 움직이지 않습니다. 실제 제작하는 게임에서는 물리 엔진을 사용하기 때문에 Rigidbody 컴포넌트를 붙이고, 기존의 코드를 수정해보도록 하겠습니다. Agent 클래스를 수정하겠습니다. using System.Collections; using System.Collections.Generic; using UnityEngine; /// <summary> /// 지능적인 움직임을 만들기 위해 행위들을 활용하는 컴포넌트 /// </summary> public class Agent : MonoBehaviour { public float maxSpeed;

03.[Unity AI]도착하기 및 떠나기 [내부링크]

https://blog.naver.com/gamemusttoy/222680083257 02.[Unity AI]추격과 회피 행위 구현하기 자 이제 행위를 구현 해볼 것이다. 먼저 해볼 행위는 추격과 회피이다. 추격과 회피는 가장 기본적인 행위... blog.naver.com 앞서 구현한 추격과 회피는 추격은 계속 플레이어한테 붙으려고 하고, 회피는 어느정도 거리가 벌어져도 계속 회피를 하였습니다. 이번에는 이런 문제를 해결하는 코드를 작성하겠습니다. Seek와 Flee와 동일한 원칙으로 작성할거니 뭐가 달라졌는지 확인하면서 보면 좋을 것입니다. 먼저 도착하기 코드인 Arrive Class를 구현하면 대상 멈춤 반경 및 느려지는 반경을 구현해보도록 하겠습니다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class Arrive : AgentBehaviour { public flo

초보자를 위한 C++ STL array 정리 [내부링크]

1)array 사용 이유 int arr[Size]; //정적 배열 int* arr = (int*)malloc(Size * sizeof(int)); //동적 배열 위 코드는 C언어부터 도입되었기 때문에 C 스타일 배열이라고 합니다. 이러한 배열은 C++에서 배열의 역할을 충분히 할 수 있지만 몇 가지 단점 때문에 더 나은 형태의 배열이 필요하기도 합니다. C 스타일 배열의 단점 1.메모리 할당과 해제를 수동으로 처리해야 합니다. 2.자료의 삽입과 삭제에 비효율적입니다. 3.깊은 복사를 수동으로 구현해야 합니다. ... ->이러한 문제를 해결하기 위해 C++에서는 array를 사용하기 시작했습니다. 2.array 사용 방법 array는 메모리를 자동으로 할당한 후 해제하고 원소의 타입과 배열 크기를 매개변수로 사용합니다. 2-1.array 초기화 & at() #include <iostream> #include <array> //array를 사용하기 위해 필요한 헤더 파일 using na

초보자를 위한 c++ STL vector 정리 [내부링크]

1)vector 사용 이유 앞서 알아본 array의 C 스타일 배열의 향상된 버전입니다. https://blog.naver.com/gamemusttoy/222620763213 초보자를 위한 C++ STL array 정리 1)array 사용 이유 위 코드는 C언어부터 도입되었기 때문에 C 스타일 배열이라고 합니다. 이러한 배열은 ... blog.naver.com 만약 array의 대해 잘 모른다면 위 내용을 한번 읽어보고 오시기를 바랍니다. 다만 array의 주요 단점 때문에 실제 응용 프로그램 개발에서 유용하게 사용하기 힘듭니다. array 단점 1.array의 크기는 컴파일 시간에 결정되는 상수이기 때문에 프로그램 실행 중에는 변경할 수 없습니다. 2.크기가 고정되어 있기 때문에 원소를 추가하거나 삭제할 수 없습니다. 3.배열 요소를 삭제하더라도 배열 자체가 메모리에서 제거되지 않는 이상 삭제된 데이터의 메모리 공간을 재사용 할 수 없습니다. 4.메모리 할당 방법을 변경을 할 수

초보자를 위한 C++ STL forward_list 정리 [내부링크]

1)forward_list 사용 이유 앞서 살펴본 STL array, vector같은 연속된 자료 구조에서는 데이터 중간에 자료를 추가하거나 삭제하는 작업이 비효율적입니다. 따라서 C++는 자료 추가, 삭제 작업을 효율적으로 할 수 있는 연결 리스트의 기본 형태인 forward_list 클래스를 제공합니다. 2)forward_list 사용 방법 forward_list는 전체 리스트 크기를 반환하거나 또는 첫 번째 원소를 제외한 나머지 원소에 직접 접근하는 기능은 제공하지 않습니다. 즉, front() 함수는 있지만 back() 함수는 없습니다. 2-1.forward_list 초기화 #include <iostream> #include <forward_list> using namespace std; int main() { //크기가 0인 forward_list 선언 forward_list<int> list0; //지정된 초깃값으로 이루어진 크기가 5인 forward_list forwar

초보자를 위한 c++ STL 반복자(iterator) 정리 [내부링크]

1)반복자란 무엇인가 앞서 array, vector, forward_list를 설명할 때 반복자(iterator)를 사용한 것을 기억하실 것입니다. https://blog.naver.com/gamemusttoy/222620763213 초보자를 위한 C++ STL array 정리 1)array 사용 이유 위 코드는 C언어부터 도입되었기 때문에 C 스타일 배열이라고 합니다. 이러한 배열은 ... blog.naver.com https://blog.naver.com/gamemusttoy/222635805330 초보자를 위한 c++ STL vector 정리 1)vector 사용 이유 앞서 알아본 array의 C 스타일 배열의 향상된 버전입니다. https://blog.naver.com/ga... blog.naver.com https://blog.naver.com/gamemusttoy/222637977580 초보자를 위한 C++ STL forward_list 정리 1)forward_list 사

초보자를 위한 STL list 정리 [내부링크]

1)list란 무엇인가 1-1.list의 존재 이유 https://blog.naver.com/gamemusttoy/222637977580 초보자를 위한 C++ STL forward_list 정리 1)forward_list 사용 이유 앞서 살펴본 STL array, vector같은 연속된 자료 구조에서는 데이터 중간에 ... blog.naver.com 앞서 설명한 forward_list는 아주 기본적인 형태로 구성된 단일 연결 리스트이기 때문에 리스트 끝에 원소 추가, 역방향 이동, 리스트 크기 반환 등의 기능은 제공하지 않습니다. 이는 메모리를 적게 쓰고 빠른 성능을 유지하기 위함입니다. 그러므로 forward_list는 빠른 원소 삽입이 필요한 모든 경우에 어울리는 컨테이너는 아닙니다. 이러한 단점을 해결하기 위해 c++는 list를 지원합니다. list는 이중 연결 리스트 구조이기 때문에 메모리를 조금 더 사용하는 대신 forward_list보다 더 많은 기능을 제공합니다. 아래

알고리즘 문제를 위한 기초 수학 알고리즘(펙토리얼,최대공약수,최소공배수,소수 찾기) [내부링크]

알고리즘 문제를 풀다보면 펙토리얼, 최대공약수, 최소공배수, 소수 찾기가 등장합니다. 이때 위 수학 알고리즘을 효율적으로 풀 수 있는 알고리즘을 소개해보도록 하겠습니다. 펙토리얼 펙토리얼의 사전적 정의는 1에서 n까지의 모든 자연수의 곱을 말합니다. 예를 들어 3!(! = 펙토리얼 기호)는 1 * 2 * 3 = 6이라고 할 수 있습니다. 그러면 이 펙토리얼 문제는 어떻게 효율적으로 해결 할 수 있을까요? 바로 재귀함수로 해결하면 됩니다!예시 코드를 보겠습니다. //펙토리얼 함수 int Fac(int a) { if (a <= 1) return 1; return a * Fac(a - 1); } int main() { cout << Fac(3); } 6 위 코드는 3!을 구하는 구하는 코드입니다. 펙토리얼 함수코드 부분을 보시면 재귀함수로 작성되어 있는 것을 알 수 있습니다. 위 함수를 한번 해석을 해보자면 a <= 1때까지 계속 a - 1로 재귀로 호출하여 a가 1이 되거나 이하면 1를

c++ 특정 문자열까지 잘라서 사용해야 되는 경우(find, rfind, substr) + KaKao 신고 결과 받기 풀이 [내부링크]

이번에는 특정 문자열을 잘라서 사용해야 되는 경우에 사용할 수 있는 명령어를 알아보도록 하겠습니다. 먼저 문자열의 위치 검색을 할 수 있습니다. find, rfind입니다. find(찾을 문자열) 문자열 검색을 앞에서부터 하여서 발견되는 위치에 인덱스를 반환 rfind(찾을 문자열) 문자열 검색을 뒤에서부터 하여서 발견되는 위치에 인덱스를 반환 이 두 명령어의 차이가 느껴지시나요? 잘 모르시는 분들을 위해 예시 코드를 하나 준비했습니다. #include <iostream> using namespace std; int main() { string s = "abba"; cout << "find:" << s.find('a') << endl; cout << "rfind: " << s.rfind('a') << endl; } find: 0 rfind: 3 위 코드의 결과를 보면 알 수 있듯이 find는 앞에서부터 시작하기 때문에 0번 인덱스에 있는 a를 먼저 발견하여 0번을 반환하게 되고 rf

codeup 3095 돌진 C++ 풀이 [내부링크]

각 통나무에서 시작하는 지점을 1, 끝나는 다음지점(끝나는 지점도 통나무로 포함하기 때문)을 -1으로 두겠습니다. 그러면 위에 사진처럼 1 ~ 8번 인덱스는 각 1 1 0 -1 0 0 0 0으로 정의할 수 있다. 그런 다음 순차적으로 값을 더하여 가장 큰 max값을 찾아서 출력하면 되는 문제이다. #include <iostream> #include <vector> using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); //cin의 속도를 더 빠르게 하기 위해 사용 vector<int> vec(10000000); int lineNum, max = 0; int x1, x2, y1; int checkMin = 10000001, checkMax = 0; cin >> lineNum; for (int i = 0; i < lineNum; ++i) { cin >> x1 >> x2 >> y1; if (checkMin >