๐Ÿ“ Game

    [Unity] null ์ฒดํฌ

    [Unity] null ์ฒดํฌ

    1. UnityEngine.Object == null๊ฐœ๋ฐœ ์‹œ ๊ฐ์ฒด๊ฐ€ ์‹ค์ œ๋กœ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด == null ์ฒดํฌ๋ฅผ ์ž์ฃผ ์‚ฌ์šฉํ•˜๊ณค ํ•œ๋‹ค. ๊ณผ์—ฐ ์ด ๋ฐฉ๋ฒ•์ด ์ตœ์„ ์ผ๊นŒ? 2. fake null"UnityEngine.Object == null์—์„œ์˜ null์ด ์ง„์งœ null์ด ์•„๋‹ˆ๋‹ค! ์ฆ‰, fake null์ด๋‹ค"๋ผ๋Š” ๋ง์ด ์กด์žฌํ•œ๋‹ค. ์™œ ๊ทธ๋Ÿด๊นŒ? ์›์ธ์€ ์œ ๋‹ˆํ‹ฐ์—์„œ์˜ null๊ณผ System์—์„œ์˜ null์˜ ์ฐจ์ด์ด๋‹ค. ์ด ์ฐจ์ด๋ฅผ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด, UnityEngine.Object์™€ System.Object์˜ null ์ฒดํฌ ๊ฐ’์ด ๋‹ค๋ฅธ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. var obj = new GameObject();yield return null; Destroy(obj);yield return nu..

    [Unreal] ์•กํ„ฐ ์ƒ์„ฑ

    [Unreal] ์•กํ„ฐ ์ƒ์„ฑ

    1. ํŠน์ • ์œ„์น˜์— ์ƒ์„ฑํ•˜๊ธฐ์Šคํฐ ํฌ์ธํŠธ๊ฐ€ ๋  ๋ธ”๋ฃจํ”„๋ฆฐํŠธ ํด๋ž˜์Šค ์•กํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๋งต ๋‚ด ์•กํ„ฐ๊ฐ€ ์ƒ์„ฑ๋  ์œ„์น˜์— ๋ฐฐ์น˜ํ•œ๋‹ค.  ์ด์ œ ์Šคํฐ ํฌ์ธํŠธ๋“ค์„ ๊ฐ€์ ธ์™€ ๊ทธ ์œ„์น˜์— ์•กํ„ฐ๊ฐ€ ์ƒ์„ฑ๋˜๋„๋ก ํ•  ๊ฒƒ์ด๋‹ค. ๋จผ์ € ๊ฒŒ์ž„ ๋ชจ๋“œ ๋ธ”๋ฃจํ”„๋ฆฐํŠธ๋ฅผ ์—ด์–ด ์ด๋ฒคํŠธ ๊ทธ๋ž˜ํ”„์— ์•„์ดํ…œ ์ƒ์„ฑ์„ ์œ„ํ•œ ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.๊ฒŒ์ž„ ๋ชจ๋“œ ๋ธ”๋ฃจํ”„๋ฆฐํŠธ์ธ ์ด์œ ๋Š” ๋ชจ๋“  ๋ ˆ๋ฒจ์—์„œ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค. ๋ ˆ๋ฒจ๋งˆ๋‹ค ๋‹ค๋ฅธ ์Šคํฐ์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋ผ๋ฉด ๋ ˆ๋ฒจ ๋ธ”๋ฃจํ”„๋ฆฐํŠธ์— ์ž‘์—…ํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค. Get All Actors Of Class With Tag ๋…ธ๋“œ๋ฅผ ํ†ตํ•ด ์Šคํฐ ํฌ์ธํŠธ๋“ค์„ ๊ฐ€์ ธ์™€ ๋ณ€์ˆ˜์— ์ €์žฅํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ Tag๋ฅผ ํ†ตํ•ด ์•„์ดํ…œ ์ข…๋ฅ˜ ๋“ฑ ํŠน์ง•์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ์ƒ์„ฑ๋˜๋„๋ก ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.  ์ƒ์„ฑํ•˜๊ณ  ์‹ถ์€ ์ˆ˜๋งŒํผ Loop๋ฅผ ๋Œ๋ฉฐ Transform์„ ๋ฐ›์•„์™€ ๊ทธ ๊ฐ’์œผ๋กœ ์•„์ด..

    [Unreal] ์ง€ํ˜• ๋งŒ๋“ค๊ธฐ (Light, Landscape, Water Plugin)

    [Unreal] ์ง€ํ˜• ๋งŒ๋“ค๊ธฐ (Light, Landscape, Water Plugin)

    1. ๋ผ์ดํŠธ(Light) ์ƒˆ๋กœ์šด level์„ ์ƒ์„ฑํ•˜๋ฉด ์•กํ„ฐ๋ฅผ ๋ฐฐ์น˜ํ•ด๋„ ์•„๋ฌด๊ฒƒ๋„ ๋ณด์ด์ง€ ์•Š๋Š”๋‹ค. 1) Directional Light Directional Light๋Š” ํƒœ์–‘์˜ ์—ญํ• ์„ ํ•˜๋Š” ๋ผ์ดํŠธ๋กœ ๊ฒŒ์ž„ ์›”๋“œ ๋‚ด ์ „์ฒด์ ์ธ ๋น›์„ ๋‚ธ๋‹ค. ๋ชจ๋นŒ๋ฆฌํ‹ฐ: Movable 2) ํ•˜๋Š˜ BP_Sky_Sphere ๋ธ”๋ฃจํ”„๋ฆฐํŠธ๋Š” ์–ธ๋ฆฌ์–ผ์—์„œ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ํ•˜๋Š˜ ๋ธ”๋ฃจํ”„๋ฆฐํŠธ์ด๋‹ค. Directional Light Actor: ์ƒ์„ฑํ•œ Directional Light ๋” ๋งŽ์€ ํšจ๊ณผ๋ฅผ ์ฃผ๊ณ  ์‹ถ๋‹ค๋ฉด, ์–ธ๋ฆฌ์–ผ ๋งˆ์ผ“ ํ”Œ๋ ˆ์ด์Šค์—์„œ ๋ฌด๋ฃŒ๋กœ ์ œ๊ณตํ•˜๋Š” ๋ธ”๋ฃจํ”„๋ฆฐํŠธ๋„ ์žˆ๋‹ค. ๋ฒˆ๊ฐœ, ๋…ธ์„, ์‚ฌ๋ง‰ ๋“ฑ ์—ฌ๋Ÿฌ ํšจ๊ณผ๋ฅผ ์ œ๊ณตํ•˜๋‹ˆ ํ™œ์šฉํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค. 3) Sky Light Directional Light์™€ ํ•˜๋Š˜๋งŒ ์„ค์ •ํ•ด๋„ ๊ฝค ๊ดœ์ฐฎ์€ ๋งต์œผ๋กœ ๋ณด์ธ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๋งต..

    [Unreal] ํƒ€์ž„๋ผ์ธ(Timeline)

    [Unreal] ํƒ€์ž„๋ผ์ธ(Timeline)

    ํƒ€์ž„๋ผ์ธ ํƒ€์ž„๋ผ์ธ ๋…ธ๋“œ๋Š” ๋ธ”๋ฃจํ”„๋ฆฐํŠธ ๋‚ด์—์„œ ๊ฐ„๋‹จํ•œ ์‹œ๊ฐ„ ๊ธฐ๋ฐ˜ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋น ๋ฅด๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์ˆ˜ ๋…ธ๋“œ์ด๋‹ค. ์ž…๋ ฅ ํ•€ play: ํƒ€์ž„๋ผ์ธ ํ˜„์žฌ ์‹œ๊ฐ„์—์„œ ์ •๋ฐฉํ–ฅ ์žฌ์ƒ play from start: ํƒ€์ž„๋ผ์ธ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ •๋ฐฉํ–ฅ ์žฌ์ƒ stop: ํƒ€์ž„๋ผ์ธ ํ˜„์žฌ ์‹œ๊ฐ„์—์„œ ์žฌ์ƒ ๋ฉˆ์ถค reverse: ํƒ€์ž„๋ผ์ธ ํ˜„์žฌ ์‹œ๊ฐ„์—์„œ ์—ญ๋ฐฉํ–ฅ ์žฌ์ƒ ์ถœ๋ ฅ ํ•€ update: ํƒ€์ž„๋ผ์ธ์ด ํ˜ธ์ถœ๋˜์ž๋งˆ์ž ์‹คํ–‰ ์‹ ํ˜ธ ์ถœ๋ ฅ ๊ทธ๋ž˜ํ”„ ํƒญ์ด๋‚˜ ๋‚ด ๋ธ”๋ฃจํ”„๋ฆฐํŠธ ํƒญ์—์„œ ํƒ€์ž„๋ผ์ธ์„ ๋”๋ธ” ํด๋ฆญํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ธ”๋ฃจํ”„๋ฆฐํŠธ ์—๋””ํ„ฐ์—์„œ ๋ฐ”๋กœ ํŽธ์ง‘์ด ๊ฐ€๋Šฅํ•˜๋‹ค. track ์ถ”๊ฐ€: float, vector ์™ธ ์—ฌ๋Ÿฌ ๊ฐ’์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์œ„ํ•œ ํŠธ๋ž™ ์ถ”๊ฐ€ Length: ํƒ€์ž„๋ผ์ธ์˜ ์žฌ์ƒ ๊ธธ์ด ์„ค์ • ํ™œ์šฉ ๋ฌธ ์—ด๊ธฐ ๋ฌธ์ด ์—ด๋ฆฌ๊ณ  ๋‹ซํžˆ๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ถ”๊ฐ€ํ•ด ๋ณผ ๊ฒƒ์ด๋‹ค. ๋จผ์ € ํƒ€์ž„๋ผ์ธ ๋…ธ๋“œ..

    [Unreal] AI ์บ๋ฆญํ„ฐ

    [Unreal] AI ์บ๋ฆญํ„ฐ

    ํ”Œ๋ ˆ์ด์–ด๋ฅผ ์ถ”์ ํ•˜๋Š” ์  ์บ๋ฆญํ„ฐ๋ฅผ ๊ตฌํ˜„ํ•  ๊ฒƒ์ด๋‹ค. 1. ์  ์บ๋ฆญํ„ฐ ๋ธ”๋ฃจํ”„๋ฆฐํŠธ ํด๋ž˜์Šค์  ์บ๋ฆญํ„ฐ๋กœ ์‚ฌ์šฉํ•  ์บ๋ฆญํ„ฐ ๋ธ”๋ฃจํ”„๋ฆฐํŠธ ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.  ์ƒ์„ฑํ•œ ์  ์บ๋ฆญํ„ฐ ๋ธ”๋ฃจํ”„๋ฆฐํŠธ ํด๋ž˜์Šค๋ฅผ ์—ฐ ๋’ค, Mesh์™€ Collision์„ ์•Œ๋งž๊ฒŒ ์ˆ˜์ •ํ•œ๋‹ค. 2. AI ์ปจํŠธ๋กค๋Ÿฌ ์ƒ์„ฑ์–ธ๋ฆฌ์–ผ ์—”์ง„์—์„œ๋Š” ์บ๋ฆญํ„ฐ๋Š” controller์˜ ์ง€๋ฐฐ๋ฅผ ๋ฐ›๋Š”๋‹ค. ํ”Œ๋ ˆ์ด์–ด ์บ๋ฆญํ„ฐ๋Š” player controller์— ๋น™์˜๋˜๊ณ  ๋™์ผํ•˜๊ฒŒ AI ์บ๋ฆญํ„ฐ๋„ AI Controller์— ๋น™์˜๋˜๊ฒŒ ๋œ๋‹ค.  AI ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ƒ์†๋ฐ›๋Š” ๋ธ”๋ฃจํ”„๋ฆฐํŠธ ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.  ์ด๋ ‡๊ฒŒ ์ƒ์„ฑํ•œ AI ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์ด์ „์— ์ƒ์„ฑํ•œ ์บ๋ฆญํ„ฐ ๋ธ”๋ฃจํ”„๋ฆฐํŠธ ํด๋ž˜์Šค์—์„œ ๋“ฑ๋ก ๊ฐ€๋Šฅํ•˜๋‹ค. Rotation Yaw ํ™œ์„ฑํ™”: AI ์บ๋ฆญํ„ฐ ํšŒ์ „ ์‹œ ์‚ฌ์šฉAuto Possess AIDisabled: ๋น„ํ™œ์„ฑํ™”Pla..

    [Unreal] ์•„์ดํ…œ ํš๋“, ์ฐฉ์šฉ

    [Unreal] ์•„์ดํ…œ ํš๋“, ์ฐฉ์šฉ

    ์บ๋ฆญํ„ฐ์— ์žฅ์ฐฉ ๊ฐ€๋Šฅํ•œ ์•„์ดํ…œ์„ ํš๋“ํ•œ ํ›„ ์ฐฉ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ตฌํ˜„ํ•  ๊ฒƒ์ด๋‹ค. 1. ์•„์ดํ…œ ์ƒ์„ฑ ๋จผ์ € ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ์•„์ดํ…œ์„ ๊ด€๋ฆฌํ•  Base C++ Class๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค. ์ด ํด๋ž˜์Šค์—์„  ์•„์ดํ…œ์˜ ํƒ€์ž…, ๋ ˆ๋ฒจ, ์ถฉ๋Œ ๋“ฑ ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉ๋  ๊ธฐ๋Šฅ๋“ค์„ ๊ด€๋ฆฌํ•œ๋‹ค. ๊ฐ ์•„์ดํ…œ๋งˆ๋‹ค ๋‹ค๋ฅด๊ฒŒ ๊ตฌํ˜„๋˜์–ด์•ผ ํ•˜๋Š” ๊ฒƒ๋“ค์€ ๋ธ”๋ฃจํ”„๋ฆฐํŠธ ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๊ทธ ์•ˆ์—์„œ ๊ด€๋ฆฌ๋˜๋„๋ก ๋ฐฉํ–ฅ์„ ์žก์•˜๋‹ค. ์•„์ดํ…œ์˜ ํƒ€์ž…์€ UENUM์œผ๋กœ ์ •์˜ํ–ˆ๋‹ค. UENUM(BlueprintType) enum class EItemType : uint8 { E_Hat = 0 UMETA(DisplayName = "Hat"), E_Bag UMETA(DisplayName = "Bag"), E_Key UMETA(DisplayName = "Key"), E_Gadget UMETA(Dis..