본문 바로가기

분류 전체보기

transform.TransformDirection(float x, float y, float z) Raycast 등에서 방향을 Vector3 값으로 넣어줄 때, 단순히 Vector3.forward와 같이 넣어주면 캐릭터가 어떤 방향을 보든 상관 없이 (0, 0, 1) 값 방향을 가리키게 된다. 만약 캐릭터가 회전하여 x축방향을 바라보고 있다면 forward는 (0, 0, 1)이 아닌 (1, 0, 0)이 되어야할 것이다. 따라서 방향에 Vector3.forward가 아닌, transform.forward를 넣을 수 있는데, transform.forward는 transform.TransformDirection(Vector3.forward) 로 바꿔쓸 수 있다. transform.TransformDirection() 는 로컬 좌표계 값을 월드 좌표계 값으로 변환해 준다.
총알 피격 파티클 발생시키기 ( Raycast, RaycastHit ) 12345678private RaycastHit hitInfo; if ( Physics.Raycast( 발사하는 위치, 발사 방향, out hitInfo, 발사 범위 ){ GameObject clone = Instantiate( 피격 파티클 오브젝트, hitInfo.point, Quaternion.LookRotation(hitInfo.normal)); Destroy(clone, 2f);}Colored by Color Scriptercs RaycastHit 에 같이 오는 속성 중 point는 Raycast로 인해 충돌된 대상의 단순 position이 아닌, 충돌된 지점을 반환한다. Quaternion.LookRotation은 괄호 안에 오는 방향을 바라보도록 회전 시켜 준다. RaycastHit의 norm..
<Win32>더블 버퍼링 https://www.youtube.com/watch?v=VwVWMC_kqFg&list=PL4SIC1d_ab-YhAo-VE51_yxBHd6yZOFHu&index=23 를 보고 배움 더블 버퍼링은 메인 화면 DC에 바로 출력해주는 것이 아니라, 'BackBuffer' 텍스처의 DC에 먼저 그려준 뒤에, BackBuffer DC를 BitBlt() 를 통해 메인 DC에 그려주는 형태이다. BitBlt( 메인 DC, 0, 0, 화면 너비, 화면 높이, BackBuffer DC, 0, 0, SRCCOPY ); 위와 같이 더블 버퍼링 처리를 하면 매 프레임마다 한 번씩만 출력되므로 화면의 깜빡임을 해결할 수 있다. BackBuffer는 맨 뒤에 출력될 이미지로, 화면의 크기에 맞는 bmp 파일로 만들어 두면 된다...
<문제점> 헤더 파일 내의 정적 멤버 함수에서 다른 클래스의 함수 사용하기 123456789101112131415161718template static T* CreateObj(const string& strTag, class CLayer* pLayer = NULL) { T* pObj = new T; if (!pObj->Init()) { SAFE_RELEASE(pObj); return NULL; } if (pLayer) { pLayer->AddObject(pObj); } pObj->AddRef(); return pObj; }Colored by Color Scriptercs 컴파일을 하게 되면 위의 코드의 13번째 줄에 2039 오류 ) 'AddObject': 'CLayer'의 멤버가 아닙니다 오류가 뜨게 된다. pLayer는 CLayer로 선언되었기 때문에 CLayer의 멤버 함..
<문제점> 오류) C2760, C7519 // 구문 오류: '식별자'은(는) 예기치 않은 토큰입니다. 필요한 토큰은 ';' 입니다. 12345678910111213templatevoid Safe_Delete_VecList(T& p){ T::iterator iter; T::iterator iterEnd = p.end(); for (iter = p.begin(); iter != iterEnd; iter++) { SAFE_DELETE((*iter)); } p.clear();}Colored by Color Scriptercs우 컴파일 결과 코드 4번 째 줄에C2760 구문 오류: '식별자'은(는) 예기치 않은 토큰입니다. 필요한 토큰은 ';' 입니다.C7519 'iterator': 종속적 형식 이름은 'typename' 접두사와 함께 사용해야 합니다. 두 가지 오류가 나타났다. T에 리스트나 벡터가 레퍼런스로 들어와 모두 초기화해주는 함수인..
BOJ 백준 16234 인구이동<BFS> https://www.acmicpc.net/problem/16234 이 문제는 상하좌우로 인접한 국가끼리의 인구 차이가 문제에서 입력되는 L 이상, R 이하인 경우 국경이 개방되고 국경이 개방된 국가끼리 인구수를 모두 더한 후 국가 수로 나누어 평균을 내 연합된 국가에 할당해주는 문제이다. 1. bfs를 통해 연합 가능한 국가들을 찾아가면서 방문 여부를 표시해주고, 총 인구수와 총 국가 수를 갱신해나간다. 2. for문을 통해 N x N 만큼 돌면서 연합국가들의 인구수들을 갱신해 주었다면, 방문 여부를 모두 지워준다. 3. 다시 N x N 만큼 돌면서 bfs를 돌려주는데, 만약 연합 가능한 국가가 한 개도 없다면, 즉 인구 이동이 불가능하다면 반복문을 끝낸다. 다른 맞은 사람들의 효율정..
BOJ 백준 1652 누울 자리를 찾아라 <수학> https://www.acmicpc.net/problem/1652 이 문제는 N x N 의 배열에서 가로, 세로로 2칸 이상 연속으로 '.'으로 이루어진 곳을 카운팅해주면 되는 간단한 문제이다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758#include #define SIZE 101 using namespace std; char room[SIZE][SIZE]; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n; cin >> n; for(int i=0; i> room[i]; } int countH = 0..
BOJ 백준 1037 약수 <수학> https://www.acmicpc.net/problem/1037 특정 수 A의 1이 아닌 약수들을 진짜 약수라고 하고, 이 약수의 총 개수와 각 약수들이 주어질 때 A가 어떤 수인지 출력해주는 문제이다. 진짜 약수들 중에서 가장 작은 약수와 가장 큰 약수의 곱은 이러한 약수들을 가지고 있는 정수가 나오게 된다. 따라서 주어지는 진짜 약수들 중에서 가장 작은 약수와 큰 약수를 구해주어 곱을 출력해주면 되는 간단한 문제이다. 123456789101112131415161718192021222324252627#include #include using namespace std; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n; int iMa..