๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ
์ ๋ํฐ Quaternion
Quaternion & Quaternion.Euler transform.rotation์ Quaternionํํ์ธ (x, y, z, w)์ ํํ๋ก ํ์๋๋ค. Quaternion.Euler์ Vector3 ๊ฐ์ ๋ฃ์ผ๋ฉด Quaternion ๊ฐ์ผ๋ก ๋ณํ๋๋ค. transfomr.rotation = Quaternion.Euler(new Vector3(30,50,20)); transform.rotation = Quaternion.Euler(30,50,20); // ์์ ๋์ผ ๊ฐ๋ ๋ํ๊ธฐ 1. Vector3 ๊ฐ์ผ๋ก ๋ณํ ํ ๋ํ ๋ค์ Quaternion์ผ๋ก ๋ค์ ๋ณํ. Quaternion originalRot = transform.rotation; Vector3 originalRotVec3 = originalRot...
[Win api] CreateWindow
๋ณธ๋ฌธ์์๋ ์๋ ํ์ด๋ผ์ดํธ ๋ถ๋ถ์ ์ธ๋ถ์ ์ผ๋ก ๋ค๋ฃฐ ๊ฒ์ด๋ค. BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) { hInst = hInstance; HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr); if (!hWnd) //์๋์ฐ์ฐฝ์ ์์ฑ ๋ชปํ์ ๊ฒฝ์ฐ๋ฅผ ์ํ ์์ธ์ฒ๋ฆฌ๋ฌธ์ด๋ค. { return FALSE; } CreateWindow๋ฅผ ํ๋ฉด ๋ฌด์กฐ๊ฑด ์๋์ฐ ํธ๋ค์ด ๋ง๋ค์ด์ง๋ค. ์ค์ ์๋์ฐ์ฐฝ์ ๋ง๋ค์ด๋ธ๋ค. ์์ฑํ ์๋์ฐ์ ํธ๋ค์ ๋ฐํํด์ค ์ค์ ์ฝ๋ ; HWND hW..
[Win api] InvalidateRect vs updatewindow
1. InvalidateRect ํ๋ฉด์ ๋ฌดํจํํด์ฃผ์ด WM_PAINT ์ ํธ๋ฅผ ๋ณด๋ด๋๋ก ํ๋ค. ์ฌ๊ธฐ์ ์ฃผ์ํ ์ ์ invalidateRect๋ WM_PAINT๋ฅผ ์ง์ ํธ์ถํ์ง ์๋๋ค. InvalidateRect ํจ์๋ ๋ฌดํจํ ์์ญ๋ง์ ์ง์ ํด ๋๊ณ ์ด ์์ญ์ ์ฒ๋ฆฌํด ๋ฌ๋ผ๋ ์ ํธ๋ง์ ์ค์ ํ๊ฒ ๋๋ค. ์ด๊ฒ์ WM_PAINT ๋ฉ์ธ์ง์ Flag๋ฅผ ์ค์ ํ๋ ๊ฒ์ด๋ค. ์์คํ ์ด ๋ฉ์์ง ํ์ ์๋ ๋ค๋ฅธ ๋ฉ์ธ์ง๋ฅผ ์ฒ๋ฆฌํด๋์ ๋ค ๋ฌดํจํ ์์ญ์ ์บ์นํ๋ฉด WM_PAINT๋ฅผ ํธ์ถํ๋ค. (๊ฐฑ์ ์์ ์ง์ฐ ์์) 2. updatewindow ๋ฉ์์ง ํ๋ฅผ ๊ฑฐ์น์ง ์๊ณ WM_PAINT๋ฅผ ์ง์ ํธ์ถํ๋ค. (๊ฐฑ์ ์์ ์ง์ฐ ์์)
[Win api] DC์ WM_PAINT, ๊ทธ๋ฆฌ๊ณ BeginPaint() vs GetDC() ๊ดํ ๋น๊ต
1. DC๋, Device Context - ๊ทธ๋ํฝ ์ถ๋ ฅ์ ํ์ํ ๋ชจ๋ ์ต์ ์ ๋ชจ์๋์ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ฒด๋ก, ์๋์ฐ์ฆ์์๋ ์ถ๋ ฅ์ฅ์น์ ๋ฌด์์ธ๊ฐ๋ฅผ ์ถ๋ ฅํ๊ธฐ ์ํด์๋ ๋ฐ๋์ DC๊ฐ ํ์ํ๋ค. ๋ณดํต DCํธ๋ค์ ์ป์ ํ ์ถ๋ ฅํ๋ค.(DCํธ๋ค์ ์ถ๋ ฅ๋์์ ๋ํ๋ด๋ ๊ตฌ๋ถ ๋ฒํธ๋ผ๊ณ ์๊ฐํ๋ฉด ์ฝ๋ค.) ๋ชจ๋ ๊ทธ๋ํฝ ํจ์๋ค์ ์ฒซ๋ฒ์งธ ์ธ์๋ก DCํธ๋ค์ ํ์๋ก ํ๋ค. - GDI์ ์ํด ๊ด๋ฆฌ๋๋ค. (GDI๋ ๊ทธ๋ํฝ ํจ์๋ค์ ๊ตฌํํ๋ ์ผ์ ๋ด๋นํ๋ ์๋์ฐ์ฆ์ ๊ตฌ์ฑ์์์ด๋ค. ๊ทธ๋ํฝ ์ถ๋ ฅ์ ์ํ์ฌ ์์ฉํ๋ก๊ทธ๋จ์ด ์ฌ์ฉํ ์ ์๋ ํจ์์ ๊ทธ์ ๊ด๋ จ๋ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํ๋ค.) - ์ฆ, ํฐํธ/์์/๊ตต๊ธฐ/์ถ๋ ฅ๋ฐฉ๋ฒ๋ฑ์ด ๋ชจ๋ ์ถ๋ ฅ์ ํ์ํ ์ ๋ณด์ด๋ฏ๋ก ๊ทธ๋ฌํ ์ ๋ณด๋ค์ด DC์ ๋ค ๋ด๊ฒจ ์๋ค๊ณ ๋ณผ ์ ์๋ค. ๊ด๋ จ ์ฝ๋: hdc = GetDC(hWnd); //!..
#include <conio.h> _getch() ์ค๋ช ๊ณผ ์ฝ๋ ์์
#include ์ฝ์ input output ํค๋ํ์ผ์ด๋ค. ์ฝ์์ฐฝ์์ ์ ์ถ๋ ฅํ๋ ๊ธฐ๋ฅ๋ค์ ์ ๊ณตํด์ฃผ๋ ํค๋ํ์ผ์ด๋ค. _getch() _getch() ํจ์๋ ๋ฌธ์ 1๊ฐ๋ฅผ ์ ๋ ฅ๋ฐ๋ ํจ์์ด๋ค. Enter๋ฅผ ์น์ง ์๋๋ผ๋ ๋ฌธ์๋ฅผ ๋๋ฅด๋ ์๊ฐ ๋ฐ๋ก ๊ทธ ๋ฌธ์๋ฅผ ๋ฐํํ๊ณ ์ข ๋ฃ๋๋ค. ๋ค์ ๋งํด, cin ์ฒ๋ผ ์ ๋ ฅํ ๋ค์ ๊ตณ์ด ์ํฐ๋ฅผ ์ถ๊ฐํ ํ์์์ด ์ ๋ ฅ ํ์ธํด์ค๋ค. ํค๋ณด๋์์ q๋ฅผ ๋๋ ์ ๋ ๊ฒ์ ์ข ๋ฃํ๊ณ ์ถ์ ๋ ์์ฑํ๋ ์ฝ๋ #include #include #include using namespace std; int main(){ while(true){ char key = _getch(); if(key=='q'|| key=='Q') break; } cout
[์ ๋ํฐ] get set ํ๋กํผํฐ Property(์์ฑ)
c#์์๋ property(์์ฑ)์ด๋ผ๋ ๊ฒ์ด ์๋ค. c++์์๋ ๋ฐ์ดํฐ์ ์๋์ ์ํด getter setter์ ์ฐ๋๋ฐ c#์ get set์ผ๋ก ์ฐ๊ณ ์ด๋ฐ ๋ฐฉ์์ property๋ผ๊ณ ํ๋ค. ํด๋์ค์์ ์ ๋ณด ์๋์ ์ํ์ฌ ํน์ ๋ณ์๋ฅผ private ์ ์ธํ๋ฉด ํด๋์ค ์ธ๋ถ์์๋ access ๋ถ๊ฐ๋ฅํ๋ค. ์ด๋ฐ ๊ฒฝ์ฐ์, ์ธ๋ถ ํด๋์ค์ ๋ฉค๋ฒ๋ณ์์ ๋ํ ์ ๊ทผ์ด ํ์ํ ๊ฒฝ์ฐ(๋ค๋ฅธ ํด๋์ค๊ฐ ํด๋น ๋ณ์๊ฐ์ ๋ฐ๊ฟ์ผ ํ ๊ฒฝ์ฐ) get,set์ ํตํด ์ ๊ทผํ ์ ์๊ฒ ๊ตฌํํด์ผ ํ๋ค. ํ๋กํผํฐ ์ฌ์ฉ๋ฒ private๋ก ์ ์ธํ ๋ณ์๋ฅผ ์ป๊ฑฐ๋ ์ธํ ํ๊ธฐ ์ํด get, set ๋ฉ์๋๋ฅผ ๊ตฌํํด์ผ ํ๋ค. get ์ ๊ทผ์์ ๋ํ ์ฝ๋ ๋ธ๋ก์ ์์ฑ์ ์ฝ์ ๋ ์คํ๋๊ณ , set ์ ๊ทผ์์ ๋ํ ์ฝ๋ ๋ธ๋ก์ ์์ฑ์ ์ ๊ฐ์ ํ ๋นํ ๋ ์คํ๋๋ค. set ..
[์ ๋ํฐ] Debug.Log์ Debug.LogFormat ํ์ฉ. ์ด๋ค ๊ฒ์ ์จ์ผํ ๊น?
Debug.Log : ํน์ง์ " " ์์์ ๋งํ๊ณ ์ถ์ ๋ฐ์ ๋ณ์๋ฅผ ๋ชจ๋ + ๋ก ์ฐ๊ฒฐ void Start() { int a = 10; Debug.Log("A์ ๊ฐ์ : " + a); } ์ถ๋ ฅ| A์ ๊ฐ์ :10 Debug.LogFormat : ํน์ง์ " "๋ด์์ ๋ฏธ๋ฆฌ ๋ณ์์ {index} ํ์ ๊ฐ๋ฅํ๋ฉฐ, ๋ณ์๋ ์ผํ๋ก ์ฐ๊ฒฐ void Start() { for (int i = 0; i
์ ๋ํฐ ์ฝ๋ฃจํด Coroutine
*๊ฐ์ธ ํ์ต์ ์ํ ํฌ์คํ ์ ๋๋ค.* ์ฝ๋ฃจํด(Coroutine) ์ ์ฐจ์ ์ ๋๋ฉ์ด์ ํจ๊ณผ๋ฅผ ์ฃผ๊ณ ์ถ์ ๋ ์ฌ์ฉํ ์ ์๋ค. Update()๋ฌธ์ ํ ํ๋ ์์ ํ๋ฒ์ฉ ํธ์ถ๋๋ ํจ์๋ผ๋ฉด (๊ฒ์ ํ๋ ์ 1์ด์ 60ํ๋ ์์ด ๋์จ๋ค๋ฉด 1์ด์ 60๋ฒ๋๋ ๊ฒฉ์ผ๋ก ํ๋ฒ ๋๋ ๊ฐ๊ฒฉ์ด 60๋ถ์ 1์ด, 80fps๋ผ๋ฉด 80๋ฒ ํธ์ถ) ์ฝ๋ฃจํด(Coroutine)์ ์ ๋ฐ์ดํธ๋ฌธ ๋ด์ ๋ธํํ์ ์ ์ฉ ๋์ ์ ํ๋ ์๊ณผ ์๊ด์์ด ๋ณ๋์ ์๋ธ ๋ฃจํด์์ ์ํ๋ ์์ ์ ์ํ๋ ์๊ฐ๋งํผ ์ํํ ์ ์๋๋ก ์ค์ ๊ฐ๋ฅํ๋ค. ์ด๋ฅผํ ๋ฉด, ์์ํ ํฌ๋ช ํด์ง๋ ํจ๊ณผ๋ฅผ ์ฃผ๊ณ ์ถ์ ๋ update๋ฌธ ์์์ ๋ก์ง์ ๋ง๋ค๋ฉด1์ด๋ ๋์ง ์์ 60ํ๋ ์ ๊ฐ๊น์ด ๋ฐ๋ณตํ๊ธฐ ๋๋ฌธ์ ์์๊ฐ์ ํฌ๋ช ํด์ง๋ ๋ถ์์ฌ๊ฐ ์๊ธฐ๋๋ฐ์ด๋ด๋๋ ์ฝ๋ฃจํด์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ๋ฆฌํ๋ค. - IEnumerator ..
์ ๋ํฐ SetSprite
Declaration public void SetSprite(int index, Sprite sprite); Parameters index The index of the Sprite being modified. sprite The Sprite being assigned. ์์ธ ์์ ์ค์ธ ์คํ๋ผ์ดํธ์ ์ธ๋ฑ์ค์ ๋๋ค. ํ ๋น๋๋ ์คํ๋ผ์ดํธ. ์ง์ ๋ ์ธ๋ฑ์ค์์ ์คํ๋ผ์ดํธ๋ฅผ ์ค์ ํฉ๋๋ค. ์ฝ๋ ์์: for (int i = 0; i
๊น์ด ์ฐ์ ํ์(DFS, Depth First Search), ๋๋น ์ฐ์ ํ์(BFS, Breadth First Search))
BFS, DFS๋ ๊ทธ๋ํ์ ํ์ ๊ธฐ๋ฒ์ผ๋ก ๋ชฉ์ ์ ์์์ ํ ์ ์ ์์ ์์ํ์ฌ ๋ชจ๋ ์ ์ ์ ๋ฐฉ๋ฌธํ๋ ๋ฐ ์๋ค. ๊น์ด ์ฐ์ ํ์ - DFS(Depth-first search) ์์ ๋ ธ๋๋ฅผ ์ฐ์ ์ ์ผ๋ก ํ์ ์ฆ, ์์ง ๋ฐฉ๋ฌธ๋์ง ์์ ์ธ์ ๋ ธ๋(์์ ๋ ธ๋)๋ฅผ ์ฐ์ ์ ์ผ๋ก ํ์ ๊น์ด ์ฐ์ ํ์์ ํ์ชฝ๋ง ์ฃฝ์ด๋ผ ํ๋ค๊ฐ ๋์ด์ ํ ๊ณณ์ด ์์ผ๋ฉด ๋ค์ ๋์์์ ๋ค๋ฅธ ํ์ชฝ์ ์ฃฝ์ด๋ผ ํ๋ ํ์์ด๋ค. ๊น์ด ์ฐ์ ํ์์ Stack์ ํตํด ๊ตฌํ๋๋ค. ๋๋น ์ฐ์ ํ์ - BFS(Breadth-first search)=๋ ๋ฒจ ์ํ(level-order traversal) ์ฝ๋๋งํฌ : BFS ์ฝ๋ (tistory.com) ๊ฐ์ ์ ๋ชจ๋ ๊ฐ์ค์น๊ฐ ๊ฐ์ ๋, ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์์ ์ ์ ์ ๊ธฐ์ค์ผ๋ก ๊ฐ๊น์ด ์ ์ ์ ๋จผ์ ๋ฐฉ๋ฌธํ๋ค. ๋ฐฉ..