๐Ÿ“ Game

    [Unreal] ๊ฒŒ์ž„ํ”Œ๋ ˆ์ด ํ”„๋ ˆ์ž„์›Œํฌ

    [Unreal] ๊ฒŒ์ž„ํ”Œ๋ ˆ์ด ํ”„๋ ˆ์ž„์›Œํฌ

    1. ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ๊ฒฝํ—˜ ์ œ์ž‘ํ”Œ๋ ˆ์ด์–ด์™€ ์›”๋“œ ๊ฐ„์— ์›ํ™œํ•œ ์ธํ„ฐ๋ž™์…˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก ์–ธ๋ฆฌ์–ผ ์—”์ง„์—์„œ๋Š” ๊ธฐ๋ณธ ๊ฒŒ์ž„ํ”Œ๋ ˆ์ด ํ”„๋ ˆ์ž„์›Œํฌ ์™ธ์—๋„ AI, ํ”ผ์ง์Šค ๋“ฑ ์ผ๋ฐ˜์ ์ธ ๊ฒŒ์ž„ํ”Œ๋ ˆ์ด ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋‹ค์–‘ํ•œ ์‹œ์Šคํ…œ๊ณผ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ œ๊ณตํ•œ๋‹ค. 2. ๊ฒŒ์ž„ํ”Œ๋ ˆ์ด ํ”„๋ ˆ์ž„์›Œํฌ๊ฒŒ์ž„ํ”Œ๋ ˆ์ด ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๊ณตํ†ต ๊ฒŒ์ž„ํ”Œ๋ ˆ์ด ์š”์†Œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ํ•ต์‹ฌ ์‹œ์Šคํ…œ ๋ฐ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค.์•กํ„ฐ, ์ปดํฌ๋„ŒํŠธ์นด๋ฉ”๋ผ์ปจํŠธ๋กค๋Ÿฌ๊ฒŒ์ž„ ๊ทœ์น™๊ฒŒ์ž„ ๋ชจ๋“œํ”Œ๋ ˆ์ด์–ด ์ž…๋ ฅ๊ฒŒ์ž„ํ”Œ๋ ˆ์ด ํƒ€์ด๋จธ์œ ์ € ์ธํ„ฐํŽ˜์ด์Šค ๋˜ํ•œ ์–ธ๋ฆฌ์–ผ์—์„œ๋Š” ์œ„์˜ ์š”์†Œ๋“ค์„ ์—ฐ๊ฒฐํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ธฐ๋„ ํ•œ๋‹ค.์ž…๋ ฅ ์ฒ˜๋ฆฌ๋ฌผ๋ฆฌ ์‹œ๋ฌผ๋ ˆ์ด์…˜์ธ๊ณต ์ง€๋Šฅ๋ฐ์ดํ„ฐ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๊ฒŒ์ž„ํ”Œ๋ ˆ์ด ํƒœ๊ทธ ์‹œ์Šคํ…œ๊ฒŒ์ž„ํ”Œ๋ ˆ์ด ์–ด๋นŒ๋ฆฌํ‹ฐ ์‹œ์Šคํ…œUI ์ œ์ž‘ ์‹œ์Šคํ…œ๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด ์ง€์› 3. ๊ฒŒ์ž„ ๋ชจ๋“œ๊ฒŒ์ž„ ๋ชจ๋“œ๋Š” ๊ฒŒ์ž„์˜ ๊ทœ์น™์„ ๊ฒฐ์ •ํ•˜๊ณ  ์ •๋ณด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ..

    [Math] ์ •๊ทœํ™”

    [Math] ์ •๊ทœํ™”

    ์ •๊ทœํ™” ์‚ฌ์ „์  ์˜๋ฏธ์˜ ์ •๊ทœํ™”๋Š” ์–ด๋–ค ๋Œ€์ƒ์„ ์ผ์ •ํ•œ ๊ทœ์น™์ด๋‚˜ ๊ธฐ์ค€์— ๋”ฐ๋ฅด๋Š” ์ •๊ทœ์ ์ธ ์ƒํƒœ๋กœ ๋ฐ”๊พธ๊ฑฐ๋‚˜, ๋น„์ •์ƒ์ ์ธ ๋Œ€์ƒ์„ ์ •์ƒ์ ์œผ๋กœ ๋˜๋Œ๋ฆฌ๋Š” ๊ณผ์ •์„ ๋œปํ•œ๋‹ค. ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ์ •๊ทœํ™”๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ •๊ทœํ™”๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๊ฒŒ์ž„ ์ˆ˜ํ•™์—์„œ์˜ ์ •๊ทœํ™”๋Š” ํ•ด๋‹น ๋ฒกํ„ฐ์˜ ๋ฐฉํ–ฅ์€ ์œ ์ง€ํ•œ ์ฑ„ ํฌ๊ธฐ๊ฐ€ 1์ธ ๋‹จ์œ„ ๋ฒกํ„ฐ๋กœ ๋งŒ๋“œ๋Š” ๊ณผ์ •์ด๋‹ค. ๋‹จ์œ„ ๋ฒกํ„ฐ๋ฅผ ํ™œ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋‘ ๊ฐœ ์ด์ƒ์˜ ๋ฒกํ„ฐ๋ฅผ ์—ฐ์‚ฐํ•  ๋•Œ ์ข€ ๋” ๋‹จ์ˆœํ•˜๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฒŒ์ž„์—์„œ๋Š” ์บ๋ฆญํ„ฐ์˜ ์ด๋™๊ณผ ๋ฐฉํ–ฅ์— ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ขŒํ‘œ๋ฅผ ์ •๊ทœํ™”ํ•˜์—ฌ ๋ณ€ํ™˜ํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฒกํ„ฐ v๋Š” ํฌ๊ธฐ ||v||์™€ ๋ฐฉํ–ฅ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋‹จ์œ„ ๋ฒกํ„ฐ u์˜ ๊ณฑ์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ •๊ทœํ™”๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด ๋‹จ์œ„ ๋ฒกํ„ฐ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฒกํ„ฐ๋ฅผ ๊ทธ ํฌ๊ธฐ๋งŒํผ ๋‚˜๋ˆ„๋ฉด ๋œ๋‹ค. ์ด๋ฅผ ์‹ค์ œ 3์ฐจ์›..

    [Unreal][C++] Pawn ํด๋ž˜์Šค

    [Unreal][C++] Pawn ํด๋ž˜์Šค

    Pawn ํด๋ž˜์ŠคPawn ํด๋ž˜์Šค๋Š” ํ”Œ๋ ˆ์ด์–ด๋‚˜ AI์˜ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์ œ์–ด๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋œ ํด๋ž˜์Šค๋ฅผ ์˜๋ฏธํ•œ๋‹ค.  1) ์ดˆ๊ธฐํ™”์ƒ์„ฑํ•œ Pawn ํด๋ž˜์Šค์— ๊ฒŒ์ž„์ด ์‹œ์ž‘๋˜์—ˆ์„ ๋•Œ ํ”Œ๋ ˆ์ด์–ด์˜ ์ž…๋ ฅ์— ๋ฐ˜์‘ํ•˜๋„๋ก ์„ค์ •ํ•  ๊ฒƒ์ด๋‹ค.AutoPossessPlayer: ๋ ˆ๋ฒจ์ด ์‹œ์ž‘๋˜๊ฑฐ๋‚˜ ํฐ์ด ์ƒ์„ฑ๋˜์—ˆ์„ ๋•Œ ์ž๋™์œผ๋กœ ํฐ์„ ์†Œ์œ ํ•ด์•ผ ํ•˜๋Š” ํ”Œ๋ ˆ์ด์–ด ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.AMyPawn::AMyPawn(){ // Set this pawn to call Tick() every frame. You can turn this off to improve performance if you don't need it. PrimaryActorTick.bCanEverTick = true; AutoPossessPlayer = EAu..

    [Unreal][C++] ํƒ€์ด๋จธ

    1. ํƒ€์ด๋จธํƒ€์ด๋จธ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•œ ์‹œ๊ฐ„๋งˆ๋‹ค ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•œ ๋™์ž‘์ด ์‹คํ–‰๋˜๋„๋ก ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์€ Tick ํ•จ์ˆ˜์—์„œ DeltaTime ๊ฐ’์„ ํ†ตํ•ด ๊ตฌํ˜„ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ง€์ •ํ•œ ๋™์ž‘์ด ์ง€์†์ ์œผ๋กœ ์‹คํ–‰๋˜์ง€ ์•Š๊ณ , ํŠน์ •ํ•œ ์‹œ๊ฐ„์—๋งŒ ๋ช‡ ๋ฒˆ ์‹คํ–‰๋˜๊ฑฐ๋‚˜, ํ…€์ด 1์ดˆ๋ฅผ ๋„˜๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด Tick ํ•จ์ˆ˜๋ณด๋‹ค ํƒ€์ด๋จธ๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. 2. ํƒ€์ด๋จธ ๊ด€๋ฆฌํƒ€์ด๋จธ๋Š” ๊ธ€๋กœ๋ฒŒ TimerManager์—์„œ ๊ด€๋ฆฌํ•˜๋ฉฐ ๊ฒŒ์ž„ ์ธ์Šคํ„ด์Šค ์˜ค๋ธŒ์ ํŠธ์™€ ๊ฐ ์›”๋“œ์— ์กด์žฌํ•œ๋‹ค. TimerManager๋ฅผ ํ†ตํ•ด ํƒ€์ด๋จธ๋ฅผ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ข…๋ฃŒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. 1) ์‚ฌ์šฉSetTimer ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋”œ๋ ˆ์ด ํ›„ ํ•จ์ˆ˜๋‚˜ ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ํƒ€์ด๋จธ๋ฅผ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ๊ทธ ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ๋ฌดํ•œ ๋ฐ˜๋ณตํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.GetWorldTimerManager().SetTi..

    ๋จธํ„ฐ๋ฆฌ์–ผ(Material)

    ๋จธํ„ฐ๋ฆฌ์–ผ(Material)

    1. Material ๋จธํ„ฐ๋ฆฌ์–ผ์ด๋ž€ ์˜ค๋ธŒ์ ํŠธ์™€ ๋งต์— ์›ํ•˜๋Š” ๋ชจ์–‘์ƒˆ๋ฅผ ๋‚ด๋Š” ๋ฐ ์žˆ์–ด ๊ฐ€์žฅ ํ•ต์‹ฌ์ ์ธ ๋ถ€๋ถ„ ์ค‘ ํ•˜๋‚˜๋กœ ์‚ฌ์šฉ๋˜๋Š” ํ…์Šค์ณ์— ๋Œ€ํ•œ ํ‘œ๋ฉด ๋ Œ๋”๋ง ๋ฐฉ๋ฒ•์˜ ์ •์˜์ด๋‹ค. 2. Material Parameter ๊ธฐ๋ณธ ํ…์Šค์ณ ์ด๋ฏธ์ง€(Albedo, Base Color)๋งŒ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๋‹จ์ˆœํ•œ ์ด๋ฏธ์ง€๋งŒ์„ ๋…ธ์ถœํ•˜์ง€๋งŒ, ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๊ฑฐ์˜ ๋ชจ๋“  ํ˜„์‹ค ์„ธ๊ณ„ ํ‘œ๋ฉด์˜ ์™ธ์–‘์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. 1) Metallic ํ‘œ๋ฉด์˜ ๋ฐ˜์‚ฌ๋„ ๋ฐ ๊ด‘์› ๋ฐ˜์‘์œผ๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ์— ๋”ฐ๋ผ ํ‘œ๋ฉด์ด ์–ผ๋งˆ๋‚˜ ๊ธˆ์† ๊ฐ™์€์ง€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. 2) Normal ๊ด‘์›์„ ๋ฐ›๋Š” ๋ฒ”ํ”„, ํ™ˆ ๋ฐ ์Šคํฌ๋ž˜์น˜ ๋“ฑ์˜ ํ‘œ๋ฉด ๋””ํ…Œ์ผ์„ ๋ชจ๋ธ์— ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‹ค์ œ ๋ชจ๋ธ๋ง์œผ๋กœ ํ™ˆ๊ณผ ๋‚˜์‚ฌ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๋…ธ๋ฉ€ ๋งต์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ ์‹ค์ œ ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ๋กœ ๋ชจ..

    [Unreal] ๋ฌผ๋ฆฌ ์—”์ง„

    [Unreal] ๋ฌผ๋ฆฌ ์—”์ง„

    ๋ฌผ๋ฆฌ ์—”์ง„ ์šด๋™, ๋‚™ํ•˜, ๋ฐ˜์‚ฌ, ์ƒํ˜ธ ์ž‘์šฉ, ๊ด€์„ฑ, ๋งˆ์ฐฐ ๋“ฑ ๋ฌผ๋ฆฌ๋ฅผ ๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ํ•˜๋‚˜ํ•˜๋‚˜ ๊ฐœ๋ฐœํ•˜๊ธฐ์—๋Š” ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„์ด ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฌผ๋ฆฌ ์—”์ง„์ด๋ผ๋Š” ๋ณ„๋„์˜ ๊ฐ•์ฒด ์—ญํ•™ ๊ณ„์‚ฐ ๋ชจ๋“ˆ์„ ํ™œ์šฉํ•œ๋‹ค. ๋ฌผ๋ฆฌ ์—”์ง„์€ ์‹ค์ œ ์—ญํ•™์„ ์ตœ๋Œ€ํ•œ ์ •ํ™•ํ•˜๊ฒŒ ์žฌํ˜„ํ•˜๋Š” ๊ฒƒ์„ ์ถ”๊ตฌํ•œ๋‹ค. ๋ฌผ๋ฆฌ ์—”์ง„์˜ ์„ฑ๋Šฅ๊ณผ ๋Šฅ๋ ฅ์€ ๊ต‰์žฅํžˆ ๋น ๋ฅด๊ฒŒ ๋ฐœ์ „ํ•˜๊ณ  ์žˆ์ง€๋งŒ, ๋ฏธํกํ•œ ๋ถ€๋ถ„์ด ์•„์ง ์กด์žฌํ•œ๋‹ค. ์žฌํ˜„์„ฑ: ๋ช‡ ๋ฒˆ์„ ์‹คํ–‰ํ•ด๋„ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป๊ณ ์ž ํ•  ๋•Œ๋Š” ๋ฌผ๋ฆฌ ์—”์ง„์ด ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค. ์ œ์–ด์„ฑ: ํ”ผ์ง์Šค ์‹œ๋ฎฌ๋ ˆ์ด์…˜์€ ํž˜๊ณผ ํ† ํฌ๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ•์ฒด๋ฅผ ์›€์ง์ด๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ฌ์ง€ ์˜ˆ์ธกํ•˜๊ธฐ๊ฐ€ ํž˜๋“ค๋‹ค. ์ฆ‰, ์ œ์–ด์„ฑ์ด ๊ต‰์žฅํžˆ ๋‚ฎ๋‹ค. ์ •๋ฐ€ํ•œ ์‹œ๋ฎฌ๋ ˆ์ด์…˜: ์ •๋ฐ€ํ•œ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์ด์ฒ˜๋Ÿผ ๋ฌผ๋ฆฌ ์—”์ง„์€ CPU ์ฒ˜๋ฆฌ ๋Šฅ๋ ฅ๊ณผ ์‹œ์ ์— ๋”ฐ๋ผ ..