Godot: Godot 4.0์šฉ ๋…ธ๋“œ ์ด๋ฆ„ ๋ณ€๊ฒฝ ์ œ์•ˆ

์— ๋งŒ๋“  2019๋…„ 07์›” 21์ผ  ยท  111์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: godotengine/godot

ํ˜ธํ™˜์„ฑ ๊นจ๊ธฐ

Godot 4.0์— ๋Œ€ํ•œ ํ˜ธํ™˜์„ฑ์„ ๊ฐ€๋Šฅํ•œ ํ•œ ์ตœ์†Œํ•œ์œผ๋กœ ์ค„์ด๊ฒ ๋‹ค๊ณ  ์•ฝ์†ํ•œ ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ, ๋‚˜๋Š” ์ด๊ฒƒ์„ ์ž ์‹œ ๋™์•ˆ ์ƒ๊ฐํ•˜๊ณ  ํ”ผ๋“œ๋ฐฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ–ˆ๊ณ , ๊ทธ๋งŒํ•œ ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ์žฅ๋ฉด๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ๊นจ๋œจ๋ฆฌ์ง€ ์•Š์•„์•ผ ํ•˜์ง€๋งŒ(๋‚ด๋ถ€ ์ด๋ฆ„์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ) ์ฝ”๋“œ์—์„œ๋Š”...

๊ทธ๋ž˜์„œ ์•„๋งˆ๋„ ์šฐ๋ฆฌ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์Šคํฌ๋ฆฝํŠธ๋ฅผ 3.0์—์„œ 4.0์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์‹ฌ๋ณผ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ๋‹ค์‹œ ํ† ํฐํ™”ํ•˜๋Š” Godot 4.0์˜ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์ˆ˜๋™ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. 2.0์—์„œ 3.0์œผ๋กœ ์ด๋™ํ•  ๋•Œ์ฒ˜๋Ÿผ).

๊ธฐ์กด ํŠœํ† ๋ฆฌ์–ผ์„ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด(์–ด์จŒ๋“  ๋ณ„๋กœ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค), ์šฐ๋ฆฌ๋Š” ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋œ ๋ฌธ์„œ๋ฅผ ๊ฒŒ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋ฐ”๊ฟ€ ๊ฒƒ

๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด Godot๊ฐ€ ์›๋ž˜ 2D ์—”์ง„์ด์—ˆ๋‹ค๊ณ  ๋งํ•˜์ง€๋งŒ ๊ทธ๊ฒƒ์€ ๊ฑฐ์ง“์ž…๋‹ˆ๋‹ค. ์›๋ž˜ 3D ์—”์ง„์ด์—ˆ๊ณ  ์บ”๋ฒ„์Šค(UI) ๋…ธ๋“œ๊ฐ€ ์žˆ๋Š” ๊ณณ์—์„œ 2D๋กœ ์ง€์›๋˜๋Š” ์œ ์ผํ•œ ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. 2D ๋…ธ๋“œ๋Š” ๋‚˜์ค‘์— ๋‚˜์™”์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ 3D ๋…ธ๋“œ์˜ ๊ฒฝ์šฐ "Spatial"์ด๋ผ๋Š” ์šฉ์–ด๊ฐ€ ์‚ฌ์šฉ๋˜๊ณ  2D ๋…ธ๋“œ์˜ ๊ฒฝ์šฐ "Node2D"๋ผ๋Š” ์šฉ์–ด๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค๋Š” ์ ์ด ์ƒ๋‹นํžˆ ํ˜ผ๋ž€์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

Godot๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ(์‹ฌ์ง€์–ด ๊ณ ๊ธ‰ ์‚ฌ์šฉ์ž๋ผ๋„) ์ด๊ฒƒ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ƒ๋‹นํžˆ ํ˜ผ๋ž€์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค(๋…ธ๋“œ ์ƒ‰์ƒ์— ์˜ํ•ด์„œ๋งŒ ๋„์›€์ด ๋˜์ง€๋งŒ, ์ฝ”๋“œ์—์„œ ์‹ค์ˆ˜๋ฅผ ํ•˜๋ฉด ์˜ฌ๋ฐ”๋ฅธ ๋ฒ„์ „ 3D๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ซ๋Š” ๊ฒƒ์ด ํ˜ผ๋ž€์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 2D ๋Œ€์‹ )).

๋‚ด ์ œ์•ˆ์€ ๋…ธ๋“œ๊ฐ€ 2D ๋ฐ 3D ํ˜•์‹์œผ๋กœ ๋ชจ๋‘ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ์ด๋ฆ„์„ ๋™์ผํ•˜๊ฒŒ ์ง€์ •ํ•˜๋˜ ๋์— 3D ๋˜๋Š” 2D๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์„ ๊ฐ„๋‹จํžˆ ๋ช…์‹œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ผ๋ถ€ ์˜ˆ์™ธ๋Š” ์ œ์™ธ).

๋”ฐ๋ผ์„œ ์ผ๋ฐ˜์ ์ธ ์ด๋ฆ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๊ณต๊ฐ„ -> Node3D
  • ๋ฉด์  -> Area3D
  • ์นด๋ฉ”๋ผ -> Camera3D
  • ํƒ์ƒ‰ -> Nagivagion3D
  • RemoteTransform -> RemoteTransform3D
  • KinematicBody -> KinematicBody3D

๋“ฑ๋“ฑ.

์ผ๋ถ€์˜ ๊ฒฝ์šฐ ํ˜„์žฌ ๋ฐฉ์‹์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ์ฃผ๋กœ 2D ๋˜๋Š” 3D์ด๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐ˜๋Œ€ ๋ฒ„์ „์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

  • Sprite๋Š” ์ฃผ๋กœ 2D ๋…ธ๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์— Sprite์™€ Sprite3D๋Š” ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • MeshInstance / MeshInstance2D๋Š” ๋ฉ”์‹œ๊ฐ€ ์ฃผ๋กœ 3D์— ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ๋” ๋ช…์‹œ์ ์ธ ๊ฒƒ์„ ์„ ํ˜ธํ•˜๊ณ  ๋ชจ๋“  ๊ฒƒ์„ ํ•ญ์ƒ 2D/3D๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๋ฉด ์ž์œ ๋กญ๊ฒŒ ์ œ์•ˆํ•˜์‹ญ์‹œ์˜ค.

๋„ค์ž„์ŠคํŽ˜์ด์Šค

๋‚˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์ด์œ ๋กœ Godot ๋‚ด์˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๊ทธ๋‹ค์ง€ ๊ด€์‹ฌ์ด ์—†์Šต๋‹ˆ๋‹ค.

  • Godot๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์•„๋‹Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค
  • ์ƒ์†์„ ๋ณด๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ๋ถ„๋ช…ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋””๋ฒ„๊ทธ ๊ธฐํ˜ธ๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค์™€ ํ•จ๊ป˜ ์ƒ๋‹นํžˆ ์ฆ๊ฐ€ํ•˜๊ณ  ๋””๋ฒ„๊ทธ ๋นŒ๋“œ๋Š” ํ›จ์”ฌ ๋” ์ปค์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ClassDB API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •์˜ํ•˜๋Š” ๊ฒƒ์„ ํ”ผํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์—†์œผ๋ฏ€๋กœ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๊ธฐ๋ฐ˜์ด ๋งŽ๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ๋งค์šฐ ์ต์ˆ™ํ•œ ์–ธ์–ด(์˜ˆ: C#)์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋กœ์„œ:

GDCLASS("Node2D") ์ •์˜ ์•„๋ž˜์—๋Š” ์„ ํƒ ์‚ฌํ•ญ์ธ
GDNAMESPACE("Nodes2D")

๋˜ํ•œ ๋ธŒ๋ผ์šฐ์ง• ๋„์›€๋ง๊ณผ ๋ฌธ์„œ๋„ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ธฐํƒ€ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ์€ ์‚ฌํ•ญ

SpatialMaterial์€ ์ƒˆ๋กœ์šด ์‚ฌ์šฉ์ž(๊ทธ๋ฆฌ๊ณ  ๊ธฐ์กด ์‚ฌ์šฉ์ž๋„)์—๊ฒŒ ์ง€์˜ฅ์ฒ˜๋Ÿผ ํ˜ผ๋ž€์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ์ด๋ฆ„์„ StandardMaterial3D๋กœ ๋ฐ”๊ฟ”์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋˜ํ•œ ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๋ฒ„์ „์„ ๋งŒ๋“ค๊ณ  ์‹ถ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” ๊ธฐ์กด ๋ฒ„์ „๊ณผ ์œ ์‚ฌํ•˜๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๋Œ€์‹  ORM ์Šคํƒ€์ผ ํ…์Šค์ฒ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(์ง€๊ธˆ Godot์—์„œ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์€ Spatial Material์„ ์‚ฌ์šฉํ•˜๊ณ  ์ˆ˜๋™์œผ๋กœ ์ฑ„๋„์„ ํ• ๋‹นํ•˜๋Š” ์—„์ฒญ๋‚œ ๋ฒˆ๊ฑฐ๋กœ์›€์ž…๋‹ˆ๋‹ค). ์ด๋Ÿฐ ์‹์œผ๋กœ ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

+ Material3D
- + StandardMaterial3D
- + ORMMaterial3D

๋˜๋Š” ์œ ์‚ฌ..

3D ์žฅ๋ฉด ๊ฐ€์ ธ์˜ค๊ธฐ ํ”„๋กœ์„ธ์Šค๋Š” ๊ฐ€์ ธ์˜ค๋Š” ๋™์•ˆ ๊ฐœ๋ณ„ ๋ฉ”์‹œ ๋ฐ ์žฌ์งˆ์— ๋Œ€ํ•œ ์˜ต์…˜์„ ์„ค์ •ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ์ „ํžˆ ์ƒ๋‹นํžˆ ๋ฒˆ๊ฑฐ๋กญ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ€์ ธ์˜ค๊ธฐ ๋„ํฌ์— ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ผ๋ถ€ ์œ ํ˜•์˜ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์„ค์ •์ด ์žˆ๋Š” ๊ฐ€์ ธ์˜ค๊ธฐ ์ฐฝ์„ ๊ฐ–๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค( ๊ฐ€์ ธ์˜จ ์žฅ๋ฉด์˜ ๊ฒฝ์šฐ).

3D ์žฅ๋ฉด ๊ฐ€์ ธ์˜ค๊ธฐ๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ ํŠธ๋ฆฌ๋ฅผ ํ‘œ์‹œํ•œ ๋‹ค์Œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ชจ๋“  ๋…ธ๋“œ/์žฌ๋ฃŒ์— ๋Œ€ํ•ด ๋งŽ์€ ๋ฉ‹์ง„ ํ•ญ๋ชฉ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋‚ด์žฅ๋œ ์žฌ๋ฃŒ ์œ ์ง€
  • ์ด ์ž๋ฃŒ๋ฅผ ์ด ํŒŒ์ผ๋กœ ๊ต์ฒด
  • ์ ์ ˆํ•œ ์ˆ˜์ค€์˜ ๋””ํ…Œ์ผ์„ ์œ„ํ•œ ๋ฉ”์‹œ LOD ํŽธ์ง‘/์ƒ์„ฑ
  • ๋ผ์ดํŠธ๋งต ์Šค์ผ€์ผ์„ ํฌํ•จํ•œ ๋ฉ”์‹œ ๋ผ์ดํŠธ๋งคํ•‘ ์˜ต์…˜์„ ํŽธ์ง‘ํ•˜์—ฌ ๋‹ค๋ฅธ ์˜ค๋ธŒ์ ํŠธ ๋“ฑ์— ๋Œ€ํ•ด ๋ผ์ดํŠธ๋งต์—์„œ ๋‹ค๋ฅธ ์Šค์ผ€์ผ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‹ค๋ฅธ ๋งŽ์€ ์˜ต์…˜.

ํ”ผ๋“œ๋ฐฑ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค!

breaks compat discussion

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ €๋Š” Godot๋ฅผ 1๋…„ ์ด์ƒ ์ „๋ฌธ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹ค์Œ์„ ์ œ์™ธํ•˜๊ณ  ๋‹น์‹ ์ด ๋งํ•œ ๋ชจ๋“  ๊ฒƒ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ๋Š” ํ˜„์žฌ ๋ฐฉ์‹์„ ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ์ ˆํ˜ธ์˜ ๊ธฐํšŒ๊ฐ€ ์žˆ์œผ๋ฉด ๋ชจ๋“  ์ด๋ฆ„์„ ๋ฐ”๊พธ๋„๋ก ํ•ฉ์‹œ๋‹ค. ์—ฌ๊ธฐ์—๋Š” Sprite2D ๋ฐ MeshInstance3D๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๋งŽ์€ ๋ถ€๋ถ„์ ์ธ ๊ณ ํ†ต์Šค๋Ÿฌ์šด ๋ฆฌํŒฉํ„ฐ๋ณด๋‹ค ์™„์ „ํ•œ ๊ณ ํ†ต์Šค๋Ÿฌ์šด ๋ฆฌํŒฉํ„ฐ๊ฐ€ ํ•ญ์ƒ ๋” ์ข‹์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  111 ๋Œ“๊ธ€

์ €๋Š” Godot๋ฅผ 1๋…„ ์ด์ƒ ์ „๋ฌธ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹ค์Œ์„ ์ œ์™ธํ•˜๊ณ  ๋‹น์‹ ์ด ๋งํ•œ ๋ชจ๋“  ๊ฒƒ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ๋Š” ํ˜„์žฌ ๋ฐฉ์‹์„ ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ์ ˆํ˜ธ์˜ ๊ธฐํšŒ๊ฐ€ ์žˆ์œผ๋ฉด ๋ชจ๋“  ์ด๋ฆ„์„ ๋ฐ”๊พธ๋„๋ก ํ•ฉ์‹œ๋‹ค. ์—ฌ๊ธฐ์—๋Š” Sprite2D ๋ฐ MeshInstance3D๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๋งŽ์€ ๋ถ€๋ถ„์ ์ธ ๊ณ ํ†ต์Šค๋Ÿฌ์šด ๋ฆฌํŒฉํ„ฐ๋ณด๋‹ค ์™„์ „ํ•œ ๊ณ ํ†ต์Šค๋Ÿฌ์šด ๋ฆฌํŒฉํ„ฐ๊ฐ€ ํ•ญ์ƒ ๋” ์ข‹์Šต๋‹ˆ๋‹ค.

์ด๋ฆ„ ๋ฐ”๊พธ๊ธฐ์— ๋Œ€ํ•ด ๋งํ•˜์ž๋ฉด: https://github.com/godotengine/godot/issues/16863

@jahd2602 ๊ฐœ์ธ์ ์œผ๋กœ ์–ด๋Š ์ชฝ์ด๋“  ์ƒ๊ด€์—†์Šต๋‹ˆ๋‹ค. ์ตœ์•…์˜ ๊ฒฝ์šฐ ํˆฌํ‘œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ์ˆœํžˆ ์ผ๊ด€์„ฑ์ด ์—†๋‹ค๋Š” ์‚ฌ์‹ค ๋•Œ๋ฌธ์— ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๊ฒƒ์„ ๊ท€์ฐฎ๊ฒŒํ•˜๋Š” ๊ฒƒ์„ ๋ถ„๋ช…ํžˆ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ ์ ์–ด๋„ ๊ทธ๋“ค์ด ๋‹ค์ˆ˜์ธ์ง€ ์†Œ์ˆ˜์ธ์ง€๋Š” ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@Zylann ์—ฌ๊ธฐ์—์„œ ๊ฒฐ์ •ํ•˜๋ฉด ์—ฌ๊ธฐ๋กœ ์˜ฎ๊ธธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋Œ€ํ•œ ์ž…์žฅ์€ ๊ทผ์‹œ์•ˆ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์—”์ง„ ์›Œํฌํ”Œ๋กœ์˜ ๊ด€์ ์—์„œ ๋ณด๋ฉด ์ดํ•ด๊ฐ€ ๋˜์ง€๋งŒ ๋„๊ตฌ ์ œ์ž‘์ž์˜ ๊ด€์ ์€ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด bitwes์˜ Godot ๋‹จ์œ„ ํ…Œ์ŠคํŠธ(GUT)๋Š” ์—…๋ฐ์ดํŠธ ์ค‘ ํ•˜๋‚˜์˜ ์ด๋ฆ„ ์ถฉ๋Œ๋กœ ์ธํ•ด ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ „์šฉ GUT ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ์—ˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ Waiting And Testing(WAT)์„ ์œ„ํ•œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์›ํ•˜๋ฏ€๋กœ ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ(GUT.Test๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ GUT)๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š” ๋™์•ˆ Test(WAT.Test๋ฅผ ํ†ตํ•ด ์•ก์„ธ์Šค)์™€ ๊ฐ™์€ ํด๋ž˜์Šค ์ด๋ฆ„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž์˜ ์Šคํฌ๋ฆฝํŠธ. ํ•˜์œ„ ํด๋ž˜์Šค๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“  ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํฌํ•จ๋œ WAT ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๋ฒˆ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์ด๋Š” ์ˆœํ™˜ ์ฐธ์กฐ ์ง€์˜ฅ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

์—”์ง„ ๋‚ด์—์„œ ๋„๊ตฌ๋ฅผ ๋นŒ๋“œํ•˜๋„๋ก ๊ถŒ์žฅํ•˜๋ ค๋ฉด ์—”์ง„ ์›Œํฌํ”Œ๋กœ ์ž์ฒด์— ์ ˆ๋Œ€์ ์œผ๋กœ ํ•„์š”ํ•˜์ง€ ์•Š๋”๋ผ๋„ ์—”์ง„์—์„œ ์ด๋Ÿฌํ•œ ๋„๊ตฌ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๋„๊ตฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์š”์•ฝํ•˜์ž๋ฉด, ์—”์ง„(๋˜๋Š” ์ตœ์†Œํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ ์Šคํฌ๋ฆฝํŠธ)์—์„œ ์ •์˜ํ•  ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ์ „์šฉ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋„๊ตฌ ์ œ์ž‘์ž๊ฐ€ ์„œ๋กœ๋ฅผ ๊ฑด๋„ˆ๋›ฐ๊ฑฐ๋‚˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์‹ ์˜ ์„ ๋ฌผ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@CodeDarigan ์ด์ ์ด

์—ฌ๊ธฐ์— ํ˜„์žฌ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์„ ํ˜ธํ•˜๋Š” GDScript ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ํฐ ๋ถˆ๋งŒ์ด ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์›์น˜ ์•Š๋Š” ์›Œํฌํ”Œ๋กœ๋กœ ๊ฐ•์ œ ์ด๋™ํ•˜๊ณ  ๋น ๋ฅด๊ณ  ๋”๋Ÿฌ์šด ๊ฒƒ์„ ๋น ๋ฅด๊ฒŒ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์–ธ์–ด๋กœ ๋” ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (C# ์‚ฌ์šฉ์ž๋Š” ๊ทธ๊ฒƒ์„ ์›ํ•˜๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ).

์ด๊ฒƒ์ด ๋‚ด๊ฐ€ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด ๋ฐ”์ธ๋”ฉ์„ ์œ„ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋กœ ์กด์žฌํ•  ์ˆ˜ ์žˆ๊ณ  GDNative C++์šฉ์œผ๋กœ ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. ํ•ต์‹ฌ C++ ์—”์ง„์— ์ถ”๊ฐ€ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

ํƒ์ƒ‰ -> Nagivagion3D
์˜คํƒ€์ธ๊ฐ€์š”?

@nitodico ์ •๋ง

@reduz @jahd2602์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ๊ฒƒ์ด ๋ถ„๋ช…ํ•˜๋”๋ผ๋„ ์ผ๊ด€์„ฑ์„ ์œ„ํ•ด 2D ๋˜๋Š” 3D๋กœ ํ›„์œ„๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ €๋Š” ์—ฌ์ „ํžˆ Godot๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ œ์•ˆ๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ํ•ฉ๋ฆฌ์ ์œผ๋กœ ๋“ค๋ฆฝ๋‹ˆ๋‹ค. ๋…ธ๋“œ์˜ 2D ๋˜๋Š” 3D ๋ณ€ํ˜•์— ๋Œ€ํ•ด ๋ฏธ๋ฌ˜ํ•˜๊ฒŒ ๋‹ค๋ฅธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์–ด๋Š ์ชฝ์ด ๋์ด๊ณ  Thing2D๋กœ ์ด๋™ํ•˜๋Š”์ง€ ๋ฐฐ์šฐ๋Š” ๋™์•ˆ ์•ฝ๊ฐ„์˜ ํ˜ผ๋ž€์„ ์•ผ๊ธฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. /Thing3D ๋˜๋Š” Thing/Thing3D๋Š” ๋ช…ํ™•์„ฑ๊ณผ ์ดํ•ด๋„๊ฐ€ ํฌ๊ฒŒ ๊ฐœ์„ ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ๋Š๊ปด์ง‘๋‹ˆ๋‹ค.

ํ•ด์ฃผ์„ธ์š”.

์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์–ด์จŒ๋“  ์˜ฌ ๊ฒƒ์ด๋ฏ€๋กœ ์ง€๊ธˆ ์ˆ˜ํ–‰ํ•˜๊ณ  ๊ณ„์† ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. 3d์˜ ๊ฒฝ์šฐ tuts๊ฐ€ ๋งŽ์ง€ ์•Š์œผ๋ฏ€๋กœ ์ด์ œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ 1, 2๋…„ ํ›„๋ณด๋‹ค ์†์ƒ์ด ์ ์Šต๋‹ˆ๋‹ค.

๋จธํ‹ฐ๋ฆฌ์–ผ๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋””ํ“จ์ฆˆ ๋ฐ ์ŠคํŽ˜ํ˜๋Ÿฌ์™€ ๊ฐ™์ด ์ตœ์†Œํ•œ์˜ ๋ฆฌ์†Œ์Šค๋งŒ ์‚ฌ์šฉํ•˜๋Š” ์ผ์ข…์˜ ๋ ˆ๊ฑฐ์‹œ ๋จธํ‹ฐ๋ฆฌ์–ผ์ด ์žˆ์œผ๋ฉด 3D ๋ชจ๋ฐ”์ผ ๊ฒŒ์ž„์— ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ๋ช…์‹œ์ ์œผ๋กœ 3D ๋˜๋Š” 2D๋กœ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ์— ์ฐฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์›๋ž˜ ์ด๋ฆ„์ด ์ƒˆ ์ด๋ฆ„์˜ ๋ณ„์นญ์œผ๋กœ ๊ณ„์† ์กด์žฌํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ํŽธ์ง‘๊ธฐ์—์„œ ์ˆจ๊ฒจ์ ธ ์ด์ „ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค(๋˜๋Š” "์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”" ์ œ๋ชฉ ์•„๋ž˜์— ๋ฐฐ์น˜๋จ). ๊ทธ๋Ÿฐ ์‹์œผ๋กœ ์ด์ „ ์ฝ”๋“œ๋Š” ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•œ ์ถ”๊ฐ€ ๋…ผ๋ฆฌ ์—†์ด๋„ ๊ณ„์† ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋…ธ๋“œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ์— ๋Œ€ํ•ด ๊ฒฝ๊ณ ๋ฅผ ์ถ”๊ฐ€ํ•œ ๋‹ค์Œ 4.1 ๋˜๋Š” 4.2์—์„œ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‘ ๊ฐ€์ง€ ๋ฒ„์ „์˜ ๋…ธ๋“œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ํ•ญ์ƒ 2D/3D ์ ‘๋ฏธ์‚ฌ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ Label -> TextLabel์ด๋ฉด ๊ธฐ์  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ผ๋ถ€ ํ…์ŠคํŠธ๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋„๋ก ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ๊ฒ€์ƒ‰ ์ฐฝ์— ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ํ‘œ์ค€ ํ…์ŠคํŠธ ๋…ธ๋“œ์˜ ์ด๋ฆ„์— ์‹ค์ œ๋กœ Text๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์ƒ๊ธฐ์‹œ์ผœ ์ฃผ๋Š” RichTextLabel๋งŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

@Janders1800 ๊ทธ๊ฒƒ์ด ์ง€๊ธˆ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. SpatialMaterial์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ ์„์ˆ˜๋ก ์ƒ์„ฑํ•˜๋Š” ์…ฐ์ด๋”๊ฐ€ ์ž‘์•„์ง‘๋‹ˆ๋‹ค.

์ €๋Š” 2d ์‚ฌ๋žŒ์ด๋ฏ€๋กœ ์ฃผ๋กœ 2d ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜๋Š” ๋…ธ๋“œ์˜ ๊ฒฝ์šฐ ์ ‘๋ฏธ์‚ฌ๊ฐ€ ์—†์œผ๋ฉด ๋…ธ๋“œ ์ด๋ฆ„์„ ์ ‘๋ฏธ์‚ฌ ์—†์ด ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ 3D ์‚ฌ์šฉ์ž์—๊ฒŒ ๋” ๊ณ ํ†ต์Šค๋Ÿฌ์šด ๋ฆฌํŒฉํ„ฐ๋ง์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ํŠน์ • ๋…ธ๋“œ๊ฐ€ ์˜๋„ํ•œ ๋„๋ฉ”์ธ์— ๋Œ€ํ•ด ๋” ์งง์€ ์ด๋ฆ„์„ ์œ ์ง€ํ•˜๊ณ  ๋‹ค๋ฅธ ๊ณณ์— ์ ‘๋ฏธ์‚ฌ๊ฐ€ ์žˆ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ 2D ๋˜๋Š” 3D ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋งŒ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ๋งŽ์€ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ, ํŠนํžˆ Spatial ํ†ตํ•ฉ๋œ ๊ฒƒ์œผ๋กœ ๋ณด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ €๋„ ๋ฌด์กฐ๊ฑด 2D / 3D ์ ‘๋ฏธ์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์ฐฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ถ€ ๋…ธ๋“œ์˜ ๊ฒฝ์šฐ ๋” "์ž์—ฐ์Šค๋Ÿฌ์šด" ์ด๋ฆ„์„ ๊ฐ€์งˆ ๊ธฐํšŒ๋ฅผ ์žƒ์€ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ์ผ๊ด€์„ฑ์ด ์Šน๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ข‹์•„ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€ StandardMaterial3D ๊ฐ€ ORM์ด ์•„๋‹Œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ œ ์š”์ ์€ ORM์ด ํ‘œ์ค€์— ์˜ํ•ด ๋” ๊ฐ•๋ ฅํ•˜๊ฒŒ ๋’ท๋ฐ›์นจ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ ์–ด๋„ RM์€ glTF์— ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค).

๊ทธ๋Ÿฌ๋‚˜ ์•„์ง ๋” ๋‚˜์€ ์ด๋ฆ„์„ ์ œ์•ˆํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์–ด์ฉŒ๋ฉด ์ด๊ฒƒ์€ '์บ”๋ฒ„์Šค'์— ๋Œ€ํ•ด ๋ญ”๊ฐ€๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ์ด๊ธฐ๋„ ํ•˜๋‹ค. ๋‚˜๋Š” ๊ทธ ๊ฐœ๋…์ด ๋•Œ๋•Œ๋กœ ์•ฝ๊ฐ„ ํ˜ผ๋ž€์Šค๋Ÿฝ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜๋‹ค.

์— 3D ๋Œ€์‘๋ฌผ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋ ต๋‹ค๋Š” ๊ฒƒ์„ ์••๋‹ˆ๋‹ค. 3D ์žฅ๋ฉด์€ Spatial ๋…ธ๋“œ์— ์žˆ์ง€๋งŒ ์บ”๋ฒ„์Šค์—๋Š” Node2D ์™€ Control ๊ฐ€ ํ˜ผํ•ฉ๋˜์–ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜์—ฌ ํ—ˆ์šฉ ์ผ๋ถ€ ๋ช…๋ช… ์ •์˜ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ทธ๋Ÿฌ๋‚˜, ๊ทธ๊ฒƒ์€ ์ข‹์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค CanvasItemMaterial ์— Material2D ์€ "์ˆœ์ˆ˜"2D์™€ GUI ์˜์—ญ์— ๋Œ€ํ•œ ๊ทธ ์˜๋ฏธ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ.

๋‚˜๋Š” ๋ฐ˜๋“œ์‹œ ์ด๋ฆ„ ๋ณ€๊ฒฝ์— ๋ฐ˜๋Œ€ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ์›๋ž˜ ์ด๋ฆ„์ด ๋‚˜์—๊ฒŒ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์ œ ๋ฐฐ๊ฒฝ ๋•Œ๋ฌธ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋ฌผ๋ฆฌ ๋˜๋Š” ๊ณตํ•™์˜ ๊ธฐ๋ณธ๊ฐ’์€ "3D"์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ณต๊ฐ„์—์„œ ์ž‘์—…ํ•˜์ง€ ์•Š๋Š” ํ•œ "3D ์šด๋™ํ•™์  ๋ชธ์ฒด"๋ผ๊ณ  ํ•˜์ง€ ์•Š๊ณ  "์šด๋™ํ•™์  ๋ชธ์ฒด"๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ๋™์ผํ•œ ๋ฐฐ๊ฒฝ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ฑฐ๋‚˜ ์ด์— ๋™์˜ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฒฐ๊ตญ ๊ฒŒ์ž„ ์—”์ง„์ด๊ณ  ๋ฌผ๋ฆฌํ•™ ๋˜๋Š” ์—”์ง€๋‹ˆ์–ด๋ง ๊ทœ์น™์„ ์—„๊ฒฉํ•˜๊ฒŒ ๋”ฐ๋ฅผ ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

ํ–ฅํ›„ ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด gdscript์—์„œ

gdscript ํŒŒ์ผ...

๊ณต๊ฐ„ ํ™•์žฅ
class_name Node3D

๋“ฑ๋“ฑ.

๋‹น์‹ ์€ ์ด๋ฆ„ ๋ฐ”๊พธ๊ธฐ์— ๋Œ€ํ•ด ์ƒ๊ฐ ํ•ด๋ณธ ์ ์ด translation ํ•˜๋Š” ๊ณต๊ฐ„ ๋…ธ๋“œ์— position ?

@BeayemX ๋ฒˆ์—ญ์€ 3D ๊ณต๊ฐ„์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ์šฉ์–ด์ด๊ณ  ์œ„์น˜๋Š” 2D ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ผ๋ฐ˜์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

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

๋‚˜๋Š” ์—ฌ๊ธฐ์— ์ œ์•ˆ๋œ ๋Œ€๋กœ 3D ๋…ธ๋“œ์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ์— ์ฐฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํŠœํ† ๋ฆฌ์–ผ ์ œ์ž‘์ž์—๊ฒŒ ์–ผ๋งˆ๋‚˜ ํฐ ๋ฌธ์ œ๊ฐ€ ๋ ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ตœ์†Œํ•œ ๊ธฐ์กด ์ฝ”๋“œ ๊ธฐ๋ฐ˜์„ ๋ฆฌํŒฉํ† ๋งํ•˜๋Š” ๊ฒƒ์€ ๊ฐ„๋‹จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. C#์—์„œ๋Š” ๋””๋ฒ„๊ทธ ๋ชจ๋“œ์—์„œ ObsoleteAttribute ๋ฅผ ๋‚จ์šฉํ•˜์—ฌ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค(์ข‹์€ ์ƒ๊ฐ์ธ์ง€๋Š” ํ™•์‹คํ•˜์ง€ ์•Š์Œ).
[Obsolete("Use Node3D", error: true)] class Spatial { /* Nothing here */ }

#18711์—์„œ ๋…ผ์˜๋œ ๋Œ€๋กœ ๋„ค์ž„์ŠคํŽ˜์ด์Šค/์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. C# API๋ฅผ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์™€ ์–ด์…ˆ๋ธ”๋ฆฌ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
4.0์— ๋Œ€ํ•œ ๋‚ด ๊ณ„ํš์€ ๋‹ค๋ฅธ ์„ ํƒ์˜ ์—ฌ์ง€๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ํ…Œ์ด๋ธ”์„ ์ง์ ‘ ํ•˜๋“œ ์ฝ”๋”ฉํ•˜๋Š” ๊ฒƒ์ด์ง€๋งŒ ๋Œ€์‹  ClassDB์—์„œ ์ด ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋” ์ข‹์•„ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@eon-s ์ œ ์ƒ๊ฐ์—๋Š” ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค... translation ๋Š” ๊ธฐ์ˆ ์ ์œผ๋กœ ์ขŒํ‘œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ ์œ ํšจํ•˜์ง€๋งŒ Godot๋Š” ์—ฌ๊ธฐ์„œ ๋‹ค๋ฅธ ์šฉ์–ด๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ์ฒซ ๋ฒˆ์งธ ์—”์ง„์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํ•ญ์ƒ position ๋ณด์•˜์Šต๋‹ˆ๋‹ค. translation ๋Š” ์›€์ง์ž„๊ณผ ๊ด€๋ จ์ด ์žˆ์œผ๋ฉฐ ์–ธ์–ด/๋ณ€ํ™˜๊ณผ ๊ด€๋ จ๋œ ๋‹ค๋ฅธ ์šฉ์–ด์™€ ์ถฉ๋Œํ•˜์—ฌ ์ด์ƒํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ https://github.com/godotengine/godot/issues/16863 ์—์„œ๋„ ์–ธ๊ธ‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

BTW, ์™œ ์šฐ๋ฆฌ๋Š” ๊ฐ€๋Šฅํ•œ ํ•œ ์ ๊ฒŒ ๊นฐ ๊ณ„ํš์ž…๋‹ˆ๊นŒ? ์‚ฌ๋žŒ๋“ค์ด ๋” ๋งŽ์€ ํ˜ธํ™˜์„ฑ ์†์ƒ, ํŠนํžˆ ์ž์Šต์„œ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋ฅผ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๊ฐ€ 4.0์„ ํ˜ธํ™˜์„ฑ์„ ๊นจ๋Š” ๊ธฐํšŒ๋กœ ์‚ผ์ง€ ์•Š๋Š”๋‹ค๋ฉด ์šฐ๋ฆฌ๋Š” ์–ธ์ œ ํ•  ๊ฒƒ์ž…๋‹ˆ๊นŒ? #16863์€ ์ด๋ฏธ ๋งŽ์€ ์ œ์•ˆ์„ ๋ชจ์œผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@neikeq 5.0์„ ๊ธฐ๋‹ค๋ฆด ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ? ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด๋‚˜ ํฐ ๊ธฐ๋Šฅ์ด ๊ณ„ํš๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ๋žŒ๋“ค์€ 1~2๋…„๋งˆ๋‹ค(๋น„๋””์˜ค ์ž์Šต์„œ ์ œ์ž‘์ž์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ์ž‘์—…์„ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•จ) ๋ช‡ ๊ฐœ์›”์˜ ๊ฒฝ๊ณ  ์‹œ๊ฐ„๊ณผ ํ•จ๊ป˜ ์ค‘์š”ํ•œ ๋ถ€ํ’ˆ์„ ๋ณ€๊ฒฝํ•˜๋Š” ์—”์ง„์— ๋Œ€ํ•œ ์ œ์ž‘ ๋ฐ ๊ณผ์ • ๊ตฌ๋งค๋ฅผ ์ค‘๋‹จํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ...

๋‚˜๋Š” ์ผ๊ด€๋œ 2D/3D ์ ‘๋ฏธ์‚ฌ๋ฅผ ๊ฐ–๋„๋ก ์ด๋ฆ„์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ์— ์ฐฌ์„ฑํ•˜๋ฉฐ ์ผ๊ด€์„ฑ์„ ์œ„ํ•ด ๋ชจ๋“  ๋…ธ๋“œ์— ๋Œ€ํ•ด ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ์ด ์Šค๋ ˆ๋“œ์˜ ๋งŽ์€ ์˜๊ฒฌ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ผ๊ด€๋œ ๋ช…๋ช… ๊ทœ์น™์„ ๊ฐ–๋Š” ๊ฒƒ์€ ์—”์ง„์„ ๋ฐฐ์šฐ๋Š” ์‚ฌ๋žŒ์ด๋‚˜ ์‚ฌ๋ฌผ์˜ 2D ์ธก๋ฉด์—์„œ 3D๋กœ ๋˜๋Š” ๊ทธ ๋ฐ˜๋Œ€๋กœ ์ด๋™ํ•˜๋Š” ์‚ฌ๋žŒ์—๊ฒŒ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

@eon-s ํ™•์‹คํžˆ 5.0์ด ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์€ ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•œ ํ›จ์”ฌ ๋” ๋งŽ์€ ์ž‘์—…์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ?

ํŠœํ† ๋ฆฌ์–ผ์ด ๋ฉ‹์ง„ ๋งŒํผ, ์ €๋Š” ๊ธฐ์กด ํŠœํ† ๋ฆฌ์–ผ์„ ์œ„ํ•ด ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒ ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์—”์ง„์„ ๋” ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐ ํˆฌํ‘œํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ˆ˜์ • ์Šคํฌ๋ฆฝํŠธ ๋˜๋Š” ์„ ํƒ์  ๋ณ„์นญ(์œ„์—์„œ ๋‹ค์–‘ํ•˜๊ฒŒ ๋…ผ์˜๋จ)์„ ์‚ฌ์šฉํ•˜์—ฌ ์—…๊ทธ๋ ˆ์ด๋“œ ๊ฒฝ๋กœ๋ฅผ ์›ํ™œํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

Node ๋…ธ๋“œ๋Š” ๊ณต๊ฐ„์— ๋Œ€ํ•œ ์ง€์‹์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— Node, Node2D ๋ฐ Node3D๊ฐ€ ํ˜ผ๋™๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Node์™€ Spatial ์‚ฌ์ด์˜ ์ด๋ฆ„ ์ง€์ • ์ฐจ์ด์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. Node๋ฅผ ์ œ๊ฑฐํ•  ๊ณ„ํš์ด ์—†๋‹ค๋ฉด ์™„์ „ํžˆ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ ‘๋ฏธ์‚ฌ๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์„ ๊ฒฌ๋ŽŒ์•ผ ํ•˜๋Š” 2D ๋˜๋Š” 3D ์˜์—ญ์„ ํ•˜๋‚˜๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ๋Š” 2D์ด๊ณ  2D์™€ 3D์˜ ํ˜ผ๋™์€ ๊ฑฐ๊ธฐ์„œ ๋์ž…๋‹ˆ๋‹ค.

3D ์ ‘๋ฏธ์‚ฌ๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๊ทธ๊ฒƒ์ด ์ถ”๊ฐ€๋˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๋‘ํ†ต์˜ ๊ฐ€์น˜๊ฐ€ ์ •๋ง๋กœ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋งŒํ•œ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๋ชจ๋“  ๊ฒƒ์„ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ ์˜ค๋ž˜๋œ ์ž์Šต์„œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๊ณ  ์˜ค๋ž˜๋œ YouTube ์ž์Šต์„œ? ๋” ๋งŽ์€ ํ˜ผ๋ž€์„ ๊ฐ€์ ธ์˜ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@dpalacio ์ €๋Š” Godot๋ฅผ ๋ช‡ ๊ฐœ์›” ๋™์•ˆ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ Spatial์ด Node3D๋กœ ์ž‘๋™ํ•˜๊ณ  Node์— ๊ณต๊ฐ„ ์ •๋ณด๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— Node3D, Node2D, Node๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ๋ช…ํ™•ํ•˜๊ณ  ๊ฐ„๊ฒฐํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. 3D์— ์ ‘๋ฏธ์‚ฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด "๋ฐ˜๋Œ€"๋ผ๋Š” ์ด๋ฆ„์ด ๋ถ™๊ธฐ ๋•Œ๋ฌธ์— ํ›จ์”ฌ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šธ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ •๋ง ๋ฐ˜๋Œ€๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ๊ฑธ ์•Œ์ง€๋งŒ ์˜์–ด๊ฐ€ ๋ชจ๊ตญ์–ด๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ป๊ฒŒ ๋” ์ž˜ ํ‘œํ˜„ํ•ด์•ผ ํ• ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. Put 3d ๋Œ€ 2d๋Š” ๋ถ„๋ช…ํžˆ ๋‚˜์—๊ฒŒ ๋ฉ‹์ง€๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค. ์ดˆ๋ณด์ž์—๊ฒŒ๋Š” ๋งค์šฐ ์‰ฌ์šธ ๊ฒƒ์ด๊ณ  ๊ฒŒ์ž„ ์—”์ง„์„ ์ฒ˜์Œ ์ ‘ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ๋”์šฑ ์‰ฌ์šธ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” ์ฃผ๋กœ ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ ๋ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์ถฉ๋Œํ•˜๋Š” ์ด๋ฆ„์€ ๊ณจ์น˜ ์•„ํ”ˆ ์ผ์ž…๋‹ˆ๋‹ค. ์ดˆ๋ณด์ž์ธ ์ €๋Š” ๋ฒ„์ „ ๊ฐ„์— ํ”„๋กœ์ ํŠธ๋ฅผ ๊ณ„์† ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— ํ˜ธํ™˜์„ฑ ์†์ƒ์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋งŽ์€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ž๋™ ๋ณ€ํ™˜ ๋„๊ตฌ์™€ ์ด์— ๋Œ€ํ•œ ์„ค๋ช…์„œ๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

@neikeq ๋„ค, ์นดํ…Œ๊ณ ๋ฆฌ๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋กœ ๋Œ€์ฒด๋˜์–ด์•ผ ํ•˜๊ณ  ์ ์ ˆํ•œ ๊ฒƒ์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ Godot๋ฅผ ์‹œ๋„ํ–ˆ์„ ๋•Œ ์ •ํ™•ํžˆ ์ƒ๊ฐํ–ˆ๋˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด OCD๋Š” ์ด๋ ‡๊ฒŒ ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

๋‹น์‹ ์€ ์ด๋ฆ„ ๋ฐ”๊พธ๊ธฐ์— ๋Œ€ํ•ด ์ƒ๊ฐ ํ•ด๋ณธ ์ ์ด translation ํ•˜๋Š” ๊ณต๊ฐ„ ๋…ธ๋“œ์— position ?

'์œ„์น˜'๋Š” ์ƒ๋Œ€์  ์œ„์น˜๊ฐ€ ์•„๋‹ˆ๋ผ ์ ˆ๋Œ€ ์œ„์น˜์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค.
๊ทธ๊ฒƒ์„ ์œ„์น˜๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฒƒ์€ ์ƒˆ๋กœ์šด ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ฒฐ๊ตญ ๊ทธ๋“ค์€ ๊ทธ๊ฒƒ์ด ๋ฒˆ์—ญ์ด๋ผ๊ณ  ๋ถˆ๋ ค์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ซ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” Godot ํŠœํ† ๋ฆฌ์–ผ์„ ์ž‘์„ฑํ•˜๊ณ  ๋‚ด ์ž์‹ ์˜ ์™„์ „ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ ํ”„๋กœ์ ํŠธ์— Godot๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ์œผ๋กœ์„œ ์ด ์ œ์•ˆ์— ๋Œ€ํ•ด ๋‹ค์†Œ ๊ฒฝ๊ณ„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋“œ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์— ์ „์ ์œผ๋กœ ์ฐฌ์„ฑํ•˜๋ฉฐ, ์ผ๊ด€์„ฑ์ด ์ค‘์š”ํ•˜๋‹ค๋Š” ์ ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ ๊ธฐ๋ฐ˜ ๋ฐ ๋ฌธ์„œ์—์„œ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•œ๋‹ค๋ฉด ๋…ธ๋“œ์˜ ๋/์‹œ์ž‘ ๋ถ€๋ถ„์— 3D ๋˜๋Š” 2D๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ณ€๊ฒฝ๋˜์—ˆ์œผ๋ฉด ํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ๋…ธ๋“œ์ž…๋‹ˆ๋‹ค.

  • MeshInstance -> MeshInstance3D ( MeshInstance2D ์™€ ์ผ๊ด€์„ฑ ์œ ์ง€)
  • GridMap -> TileMap3D ๋˜๋Š” GridMap3D
  • TileMap -> TileMap2D ๋˜๋Š” GridMap2D
  • YSort -> YSort2D ๋˜๋Š” 2DSort (๋˜๋Š” 2D์šฉ์œผ๋กœ ํ‘œ์‹œํ•  ํ•ญ๋ชฉ)
  • ProximityGroup -> ProximityGroup3D
  • GIProbe -> GIProbe3D (๋˜๋Š” 3D์šฉ์ž„์„ ๋ณด์—ฌ์ค„ ๊ฒƒ)
  • ReflectionProbe -> ReflectionProbe3D (๋˜๋Š” 3D์šฉ์ž„์„ ๋ณด์—ฌ์ค„ ๊ฒƒ)
  • SpatialMaterial -> PBRMaterial ๋˜๋Š” Godot3DMaterial ๋˜๋Š” StandardMaterial3D (์•„์ด๋””์–ด๋งŒ)
  • Label -> TextLabel (๋‚˜๋Š” @MuffinManKen์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค)

๋‹ค์Œ์€ ๊ธ์ •์ ์ธ ๋ถ€๋ถ„๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ์ด ์ œ์•ˆ์— ๋Œ€ํ•œ ์ œ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค.

์ด๋ฒˆ ๋ณ€๊ฒฝ์œผ๋กœ Godot ๊ฒฝํ—˜์ด ์—†์œผ์‹  ๋ถ„๋“ค๋„ ์‰ฝ๊ฒŒ ํ•˜์‹ค ์ˆ˜ ์žˆ์„ ๊ฑฐ๋ผ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค๋งŒ, ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ ์ดํ›„์— ์˜ค์‹œ๋Š” ๋ถ„๋“ค๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ 3D ์ธก๋ฉด์—์„œ ๋‚ด๊ฐ€ ์ฐพ์€ ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜๋Š” ํ•„์š”ํ•œ ๋…ธ๋“œ๋ฅผ ์ฐพ๊ธฐ๊ฐ€ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ผ๊ด€๋œ ๋ช…๋ช… ์ฒด๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋…ธ๋“œ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜๋ฉด ๋ชจ๋“  ์‚ฌ๋žŒ์ด ํ›จ์”ฌ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ Godot๋กœ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์„ ๋„์šธ ๋•Œ ๋งŽ์€ ๊ฒฝ์šฐ, ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ๋Š” ๊ฐ€์žฅ ํ™•์‹คํ•œ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋Š” ๋ฌธ์„œ๋ฅผ ๋ณด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋…ธ๋“œ์˜ ์ด๋ฆ„์ด ํ•ญ์ƒ ์ผ์น˜ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฏ€๋กœ ์ฐพ๊ณ  ์žˆ๋Š” ๋…ธ๋“œ์˜ ์ด๋ฆ„์„ ์ด๋ฏธ ์•Œ๊ณ  ์žˆ์ง€ ์•Š๋Š” ํ•œ ํŠน์ • ๋…ธ๋“œ์˜ ๊ฒฝ์šฐ ์„ค๋ช…์„œ ํŽ˜์ด์ง€๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ œ์•ˆ์„ ๋ณ€๊ฒฝํ•˜๋ฉด ์˜ฌ๋ฐ”๋ฅธ ๋…ธ๋“œ๋ฅผ ํ›จ์”ฌ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ณ€๊ฒฝ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋˜ ๋‹ค๋ฅธ ์ด์ ์€ ๋…ธ๋“œ ์ด๋ฆ„ ์ง€์ • ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ํ‘œ์ค€์„ ์„ค์ •ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ ์ œ์ž‘์ž์™€ ํ–ฅํ›„ Godot ์—”์ง„ ๊ธฐ์—ฌ์— ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ (์˜ˆ๋ฅผ ๋“ค์–ด) ๋ฐ์นผ ๋…ธ๋“œ๋ฅผ ๋งŒ๋“œ๋Š” ์ค‘์ด๋ผ์„œ ์˜ˆ๋ฅผ ๋“ค์–ด,์ด ๋ณ€ํ™”์— ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๊ฐ™์€ ์ด๋ฆ„์„ํ•ด์•ผ ์•Œ ์ˆ˜ Decal3D ๋Œ€์‹ ์˜ Decal .
์ด๊ฒƒ์€ ๋˜ํ•œ GDScript/C# ์ •์˜ ํด๋ž˜์Šค์˜ ์ด๋ฆ„ ์ง€์ •์— ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋˜ํ•œ ๋” ์ด์ƒ Spatial ๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ 3D์—์„œ Node2D ์ž„์„ ์„ค๋ช…ํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ–ฅํ›„ ํŠœํ† ๋ฆฌ์–ผ ์ž‘์„ฑ์„ ์กฐ๊ธˆ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค.


์ด์ œ ๋„ค๊ฑฐํ‹ฐ๋ธŒ์— ๋Œ€ํ•ด:

์ œ๊ฐ€ ์ด ์ œ์•ˆ์— ๋Œ€ํ•ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜๋Š” ๋„ˆ๋ฌด ๋นจ๋ฆฌ ๋ณด์ธ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŠนํžˆ Godot 3.0+๊ฐ€ ์–ผ๋งˆ ์ „์— ์ƒํ™ฉ์„ ์–ผ๋งˆ๋‚˜ ๋งŽ์ด ๋ฐ”๊ฟจ๋Š”์ง€ ๊ณ ๋ คํ•  ๋•Œ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. Godot 3.0+๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒŒ์ž„๋„ ๋ช‡ ๊ฐœ ์•ˆ ๋‚˜์™”๊ณ , 3D Godot ๊ฒŒ์ž„๋„ ๊ฑฐ์˜ ์—†๋Š” ๊ฒƒ ๊ฐ™์•„์š”.
Godot ์‡ผ์ผ€์ด์Šค์— ์žˆ๋Š” ํฌ๊ณ  ์ธ์ƒ์ ์ธ 3D ๊ฒŒ์ž„ ์ค‘ ์ƒ๋‹น์ˆ˜๊ฐ€ ์•„์ง ์ถœ์‹œ๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ, ์ด์™€ ๊ฐ™์ด ํฐ ๋ณ€ํ™”๋ฅผ ์ผ์œผํ‚ค๋ฉด ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋„ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋งค์šฐ ๊ฐ•๋ ฅํ•œ 3D Godot ๊ฒŒ์ž„์ด ๋” ์ง€์—ฐ๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ Godot 3.0+ ํŠœํ† ๋ฆฌ์–ผ์ด ๊ณ„์† ๋‚˜์˜ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ 3D ์ธก๋ฉด์—์„œ ์ƒํ™ฉ์ด ์–ด๋Š ์ •๋„ ๊ฒฌ์ธ๋ ฅ์„ ์–ป๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ถ€๋ถ„์ ์œผ๋กœ Godot 3.0+์—์„œ ๋” ๊ฐ•๋ ฅํ•ด์ง„ Godot์˜ 3D ์ธก๋ฉด ๋•Œ๋ฌธ์ด์ง€๋งŒ, ์ €๋Š” ๋งŽ์€ ์žฌ๋ฃŒ ํŠœํ† ๋ฆฌ์–ผ ์ž‘์„ฑ์ž๊ฐ€ ๋งŒ๋“ค๊ณ  ์žˆ๋Š”(๋˜๋Š” ์ž‘์—… ์ค‘์ธ) ์ด๋ฆ„ ๋ณ€๊ฒฝ์„ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ‘์ž๊ธฐ ๋Œ€๋Œ€์ ์ธ ์ˆ˜์ •์ด ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™์•„ ๋‘๋ ต์Šต๋‹ˆ๋‹ค. ์˜ค๋ž˜๋œ ํŠœํ† ๋ฆฌ์–ผ์„ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ ๋‹ค์‹œ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ƒˆ ํŠœํ† ๋ฆฌ์–ผ์„ ๋งŒ๋“œ๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.

๋ช…๋ช… ๋ณ€๊ฒฝ์€ ๋˜ํ•œ ํŠœํ† ๋ฆฌ์–ผ์ด ์•„๋‹Œ ๊ธฐ์กด ๋ฆฌ์†Œ์Šค, ๋ฌธ์ œ์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์†”๋ฃจ์…˜์„ ๊ฐ‘์ž๊ธฐ ๊ตฌ์‹์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. Godot์˜ 2D ์ธก๋ฉด์€ ํ‹€๋ฆผ์—†์ด ๋งค์šฐ ๊ฐ•๋ ฅํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ์ ์‘ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ 3D ์ธก๋ฉด์„ ์‚ฌ์šฉํ•˜๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ๋ˆˆ์— ๋„๊ฒŒ ์ž‘์Šต๋‹ˆ๋‹ค. ๋…ธ๋“œ์˜ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•จ์œผ๋กœ์จ ์ด๊ฒƒ์ด Godot์˜ 3D ์‚ฌ์šฉ์ž ์„ฑ์žฅ๊ณผ 3D ๊ด€๋ จ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์„ ์ฐพ๋Š” ๋Šฅ๋ ฅ์„ ๋ฐฉํ•ดํ• ๊นŒ๋ด ๊ฑฑ์ •๋ฉ๋‹ˆ๋‹ค.

@eon-s์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์กฐ๊ธˆ ๊ธฐ๋‹ค๋ฆฌ๋ฉด ์•ˆ ๋˜๋‚˜์š”? ์ ์–ด๋„ ์ฝ”๋“œ ๊ธฐ๋ฐ˜์—์„œ๋Š” Godot 4.0๊ณผ ํ•จ๊ป˜ ์ด๋ฏธ ์ƒํ™ฉ์ด ์ƒ๋‹นํžˆ ๊ทน์ ์œผ๋กœ ๋ฐ”๋€Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ ๋‹ค๋ฅธ ๋Œ€๊ทœ๋ชจ ๋ณ€๊ฒฝ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ๊ฐœ๋ฐœ์„ ๋” ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค๊ณ  ์‚ฌ๋žŒ๋“ค์ด Godot์˜ 3D ์ธก๋ฉด์—์„œ ์ด๋ฃจ๊ณ  ์žˆ๋Š” ๋งŽ์€ ์ง„์ „์„ ์žฌ์„ค์ •ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

Godot 4.0์ด ๋‚˜์˜ค๋ฉด ๋ฒ„์ „ 4.1์ด๋‚˜ 5.0์—์„œ ๋…ธ๋“œ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋Š” ์ž‘์—…์ด ํ›Œ๋ฅญํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ, ์ œ ์ƒ๊ฐ์—๋Š” ์ด์™€ ๊ฐ™์€ ๋˜ ๋‹ค๋ฅธ ํฐ ๋ณ€๊ฒฝ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๋„์›€๋ณด๋‹ค ํ•ด๊ฐ€ ๋” ๋งŽ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ์ „ํ™˜์„ ๋” ์ข‹๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ํ•œ ๊ฐ€์ง€๋Š” ์˜ˆ๋ฅผ ๋“ค์–ด Godot 4.0์—์„œ Godot 4.1๋กœ ๋ณ„์นญ/์ „ํ™˜ ๊ธฐ๊ฐ„์„ ๊ฐ–๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํŠœํ† ๋ฆฌ์–ผ๊ณผ ๋ฆฌ์†Œ์Šค(ํŠนํžˆ 3D)๋ฅผ ์ฆ‰์‹œ ์“ธ๋ชจ์—†๊ฒŒ ๋งŒ๋“ค์ง€ ์•Š์œผ๋ฉฐ ๋ชจ๋“  ์‚ฌ๋žŒ์ด Godot 4.0์˜ ๋ณ€๊ฒฝ์œผ๋กœ๋ถ€ํ„ฐ ํ˜œํƒ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๋™์‹œ์— ๋‹ค๊ฐ€์˜ค๋Š” ๋ณ€๊ฒฝ์— ์ ์‘ํ•  ๊ธฐํšŒ๋ฅผ ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ณ„์นญ/์ „ํ™˜ ๊ธฐ๊ฐ„์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ‘์ž๊ธฐ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ํ•œ ๋ฒˆ์— ๋ชจ๋‘ ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š๊ณ ๋„ ํ˜ธํ™˜์„ฑ์„ ๊นจ๋Š” ๋ณ€๊ฒฝ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด๋ก ์ ์œผ๋กœ ์‹œ์Šคํ…œ์ด ์ „ํ™˜์„ ์œ„ํ•ด ๋ฐฐ์น˜๋˜๋ฉด ํ–ฅํ›„ ํ˜ธํ™˜์„ฑ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์œ„ํ•ด ๋‹ค์‹œ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ˜ธํ™˜์„ฑ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋” ์ž์ฃผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด #16863์— ๋‚˜์—ด๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ณด๋‹ค ์‰ฝ๊ฒŒ โ€‹โ€‹์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


TLDR: ์ €๋Š” ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ์ฐฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์‚ฌ๋žŒ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ์ ์‘ํ•  ์‹œ๊ฐ„์„ ์ฃผ๊ธฐ ์œ„ํ•ด Godot 4.1 ๋˜๋Š” ์ „ํ™˜ ์‹œ์Šคํ…œ/๊ธฐ๊ฐ„์ด ๋งŒ๋“ค์–ด์งˆ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ์ œ์•ˆ์ด ์–ด๋–ป๊ฒŒ ๋๋‚˜๋“  ๊ฐ„์—: Godot 4.0์€ ํ›Œ๋ฅญํ•  ๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ  ๊ธฐ๋Œ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ™‚

@reduz ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์œ„ํ•ด ๊ฐ„๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‘ ๋ฒˆ์งธ @jahd2602

๋‚˜๋Š” ๋ชจ๋“  3D ๋…ธ๋“œ๋ฅผ "3D"๋กœ ๋๋‚ด๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•˜์ง€ ์•Š์ง€๋งŒ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์›ํ•œ๋‹ค๋ฉด ํ™•์‹คํ•ฉ๋‹ˆ๋‹ค. ํ•ญ์ƒ ์ ‘๋ฏธ์‚ฌ(์˜ˆ: TileMap ๋ฐ GridMap)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋‹ค๋ฅธ ์ด๋ฆ„์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” "๋ฒˆ์—ญ"๋ณด๋‹ค "์œ„์น˜"๋ฅผ ํ›จ์”ฌ ๋” ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. ํ›„์ž๋Š” ํ˜„์ง€ํ™” ๋ฐ ์–ธ์–ด์™€ ํ˜ผ๋™๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ „์ž๋Š” ์ฆ‰์‹œ ๋ช…ํ™•ํ•˜๊ณ  ์ดˆ๋ณด์ž์—๊ฒŒ ์นœ์ˆ™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Godot๋Š” ์ด๋ฏธ ๋Œ€๋ถ€๋ถ„์˜ ์žฅ์†Œ์—์„œ ์ด๊ฒƒ์„ ์œ„ํ•ด "origin"์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ๋˜ํ•œ ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ์— ์œ ์ตํ•œ ๋ณ€ํ™”๋ผ๋ฉด ํ˜ธํ™˜์„ฑ์„ ๊นจ๋Š” ๊ฒƒ์ด ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๋Š” @neikeq์˜ ๋ง์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ #16863์˜ ๋Œ€๋ถ€๋ถ„์ด ๊ตฌํ˜„๋˜๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

(btw Sprite3D๊ฐ€ ์ฟผ๋“œ ๋ฉ”์‹œ์ผ ์ˆ˜ ์žˆ๋Š”๋ฐ ์™œ ์กด์žฌํ•ฉ๋‹ˆ๊นŒ?)

@TwistedTwigleg ๋‚ด ๊ฒŒ์‹œ๋ฌผ์„ ์ฝ์–ด

์ข‹์€ ๋ณ€ํ™”์ž…๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋จธ๋กœ์„œ ์ƒ๋Œ€๋ฐฉ์˜ ์ด๋ฆ„์„ ์ตœ๋Œ€ํ•œ ๋Œ€์นญ์ ์œผ๋กœ ๋ณด๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.

ORM ์Šคํƒ€์ผ ํ…์Šค์ฒ˜๊ฐ€ ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

@reduz ๋Š” ํ‘œ์ค€ ๊ณต๊ฐ„ ๋จธํ‹ฐ๋ฆฌ์–ผ๊ณผ ORM ๋จธํ‹ฐ๋ฆฌ์–ผ ์‚ฌ์ด์˜ ์œ ์ผํ•œ ์ฐจ์ด์ ์ž…๋‹ˆ๋‹ค. ORM์—๋Š” ํ…์Šค์ฒ˜ ์ฑ„๋„์ด ํ•˜๋‚˜๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค(ํ˜„์žฌ 3๊ฐœ๊ฐ€ ์•„๋‹Œ)? ์ŠคํŽ˜ํ˜๋Ÿฌ ๋ฐ ์Šน์ˆ˜์™€ ๊ฐ™์€ ๋™์ผํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜(๊ธˆ์† ๋ฐ ๊ฑฐ์น ๊ธฐ)์— ๊ณ„์† ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ž์ฃผ ์‚ฌ์šฉํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ๊ฐ€๋” ์กฐ์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์•„์ด๋””์–ด๋Š” ๋งˆ์Œ์— ๋“ค์ง€๋งŒ, ์ด๋ ‡๊ฒŒ ์ž‘์€ ๋ณ€ํ™”์— ๋Œ€ํ•ด 2๊ฐ€์ง€ ์žฌ๋ฃŒ ์œ ํ˜•์„ ๊ฐ–๋Š” ๊ฒƒ์ด ๊ณผํ•˜์ง€ ์•Š์€์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์‹  ๋‹จ์ผ ์žฌ๋ฃŒ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ORM ๋ชจ๋“œ์˜ ๊ฒฝ์šฐ 1๊ฐœ์˜ ํ…์Šค์ฒ˜ ์ฑ„๋„ ๋˜๋Š” ๊ธฐ์กด ์Šคํƒ€์ผ์˜ ๊ฒฝ์šฐ 3๊ฐœ์˜ ํ…์Šค์ฒ˜ ์ฑ„๋„ ๊ฐ„์— ์ „ํ™˜ํ•˜๋Š” ํ† ๊ธ€์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋˜ํ•œ ์ตœ๊ทผ์—๋Š” ํ…์Šค์ฒ˜์—์„œ ๋” ๋งŽ์€ ๋งˆ์ผ๋ฆฌ์ง€๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ORM ๋งต์˜ ์•ŒํŒŒ ์ฑ„๋„์— ๊นŠ์ด(๋†’์ด) ์ฑ„๋„์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ 3๊ฐœ์˜ ํ…์Šค์ฒ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋Œ€๋ถ€๋ถ„์˜ ํ…์Šค์ฒ˜๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค...albedo/normal/ORM(H). ์ด๊ฒƒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ถ”๊ฐ€ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 4.0์ด ๊ฒฐ๊ตญ ํ…Œ์…€๋ ˆ์ด์…˜/๋ณ€์œ„๋ฅผ ์–ป๋Š”๋‹ค๋ฉด ๋†’์ด ์ฑ„๋„์€ ํ˜„์žฌ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์ค‘์š”ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋งํ•˜์ž๋ฉด 4.0์—์„œ DEPTH ์ฑ„๋„์˜ ์ด๋ฆ„์„ HEIGHT๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ํ˜„์žฌ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๋ฐ˜๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์€ ๊ธฐํšŒ๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ฆ‰, ํฐ์ƒ‰์€ ์œต๊ธฐ๋œ ํ‘œ๋ฉด์ด๊ณ  ๊ฒ€์€์ƒ‰์€ ์˜ค๋ชฉํ•จ). ์ด๊ฒƒ์€ ๋‹ค๋ฅธ ๋ Œ๋”๋Ÿฌ ๋ฐ ๊ฒŒ์ž„ ์—”์ง„, ๊ทธ๋ฆฌ๊ณ  ๋” ์ค‘์š”ํ•œ ๊ฒƒ์€ Substance, Quixel ๋ฐ Marmoset๊ณผ ๊ฐ™์€ ๋„๊ตฌ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2D ๋ฐ 3D ๋…ธ๋“œ์— ๋Œ€ํ•œ ๋ช…์‹œ์  ์ ‘๋ฏธ์‚ฌ๋ฅผ ํ›จ์”ฌ ์„ ํ˜ธํ•˜๊ณ  ํ•ด๋‹น๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ ‘๋ฏธ์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋˜ํ•œ "Node2D" ๋…ธ๋“œ์— ๋Œ€ํ•ด ์™„์ „ํžˆ ๋ถ„๋ฆฌ๋œ "Control" ๋…ธ๋“œ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค(๋‘˜ ๋ชจ๋‘ ํ˜„์žฌ "CanvasItem" ์•„๋ž˜์— ๊ทธ๋ฃนํ™”๋˜์–ด ์žˆ์Œ).

translation ๋Œ€ position , ๋‚˜๋Š” 2D์™€ 3D ๋ชจ๋‘์—์„œ ์ „์ž๋ฅผ ํƒํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

position ๊ฐ€ ๋” ์นœ์ˆ™ํ•ด ๋ณด์ด์ง€๋งŒ ์กฐ์ƒ์— ํšŒ์ „์ด๋‚˜ ํฌ๊ธฐ๊ฐ€ ์ง€์ •๋˜๋ฉด ์˜๋ฏธ๊ฐ€ ์—†์–ด์ง‘๋‹ˆ๋‹ค.

ํ˜ธํ™˜์„ฑ๊ณผ ๊ด€๋ จํ•˜์—ฌ ์ „ํ™˜ ๋‹จ๊ณ„๋Š” ์ž์Šต์„œ, ์‚ฌ์šฉ์ž ๋ฐ ํ”„๋กœ์ ํŠธ์— ์ถฉ๋ถ„ํ•œ ์‹œ๊ฐ„์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  4.x ๋ฆด๋ฆฌ์Šค์— ๋Œ€ํ•ด ์ง€์†๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ ์ด๋ฆ„์€ ์ผ๋ฅ˜ ์‹œ๋ฏผ์ด์–ด์•ผ ํ•˜๊ณ  ๊ถŒ์žฅ๋˜์–ด์•ผ ํ•˜์ง€๋งŒ ์ด์ „ ์ด๋ฆ„์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์•Œ๋ฆฌ๋Š” ์ผ๋ถ€ ํŽธ์ง‘์ž ๋‚ด ๋ฉ”์ปค๋‹ˆ์ฆ˜๊ณผ ํ•จ๊ป˜ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ตœ์ข… ์‚ฌ์šฉ์ž๊ฐ€ ๊ธฐ์กด ์ฝ”๋“œ(์ž์‹ ์˜ ์ฝ”๋“œ ๋˜๋Š” ๊ธฐ์กด ์ž์Šต์„œ ๋ฐ ์„ค๋ช…์„œ์˜ ์ฝ”๋“œ)๋ฅผ ์‰ฝ๊ฒŒ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ œ์•ˆ๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์–ธ๊ธ‰ํ•œ ๋Œ€๋กœ ์ผ์ข…์˜ ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ์ฐฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌํ•œ ๋„๊ตฌ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— v2์—์„œ v3์œผ๋กœ์˜ ํฐ ๋ณ€ํ™”๊ฐ€ ์žˆ์€ ์งํ›„์— ์šฐ๋ฆฌ๊ฐ€ ์Œ“์ด๊ฒŒ ๋  ๊ฒƒ์ด๋ผ๋Š” ๋ฐ ๋™์˜ํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

@TwistedTwigleg 3d ๊ฒŒ์ž„ ์ถœ์‹œ์™€ ๊ด€๋ จํ•˜์—ฌ 4.0๊ณผ Vulcan์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค ๐Ÿ˜Ž

๋˜ํ•œ Control ๋…ธ๋“œ ์ด๋ฆ„... ๋ฐ ์ธ๋ผ์ธ ๋ฌธ์„œ๋„ ๊ฒ€ํ† ํ•ฉ๋‹ˆ๋‹ค.

๋•Œ๋กœ๋Š” AcceptDialog ์™€ ConfirmationDialog ์˜ ์ฐจ์ด์ ์ด ๋ฌด์—‡์ธ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. PopupPanel , PopupDialog , PopupMenu ... ํฌ๋งํ•ฉ๋‹ˆ๋‹ค. ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค!

ํŠœํ„ฐ์ด์ž ๋ฌธ์„œ ๊ธฐ๊ณ ์ž๋กœ์„œ ์ €๋Š” ์•ž์œผ๋กœ ๋‚˜์•„๊ฐ€๋ผ๊ณ  ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค! ๋ณ€๊ฒฝ ์‚ฌํ•ญ์œผ๋กœ ์ธํ•ด ํ–ฅํ›„ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์—”์ง„์„ ๋” ์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๊ณ  ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค๋ฉด ๋” ๋งŽ์€ ์ฝ˜ํ…์ธ ๋ฅผ ์ œ์ž‘ํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ข…๋ฅ˜์˜ ๋ณ€๊ฒฝ๋„ ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

ํŒŒํ‹ฐ์— ๋Šฆ๊ฒŒ ์™”์ง€๋งŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋ช‡ ๊ฐ€์ง€ ์„ค๋ช…:

  • ๋…ธ๋“œ ์ด๋ฆ„ ๋ณ€๊ฒฝ ์ œ์•ˆ, ํ˜ธํ™˜์„ฑ ์œ ์ง€ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ธฐ์ˆ ์  ์˜๋ฏธ, ๊ธฐ์กด ํ”„๋กœ์ ํŠธ, ํŠœํ† ๋ฆฌ์–ผ, ์ฝ˜ํ…์ธ  ์ œ์ž‘์ž ๋“ฑ์— ๋Œ€ํ•œ ์˜ํ–ฅ์— ๋Œ€ํ•ด์„œ๋งŒ ์˜๊ฒฌ์„ ๋งํ•˜์‹ญ์‹œ์˜ค.
  • ์ด๊ฒƒ์€ ์ด๋ฆ„ ๋ณ€๊ฒฝ์„ ๊ณ ๋ คํ•ด์•ผ ํ•˜๋Š” API์˜ ํŠน์ • ์‚ฌํ•ญ์„ ๋…ผ์˜ํ•˜๋Š” ๊ณณ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด ๋Œ€๊ทœ๋ชจ ์ด๋ฆ„ ๋ณ€๊ฒฝ์„ ์ง„ํ–‰ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜๋ฉด ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ์—์„œ ์ „์ฒด API๋ฅผ ๊ฒ€ํ† ํ•˜์—ฌ ์ด๋ฆ„์ด ์ผ๊ด€๋œ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ์„ค๋ช…๋œ ๊ฒƒ ์ด์ƒ์œผ๋กœ ์ด๋ฆ„์„ ๋ฐ”๊ฟ”์•ผ ํ•˜๋Š” ๋ฉ”์„œ๋“œ, ์†์„ฑ ๋˜๋Š” ํด๋ž˜์Šค์™€ ๊ฐ™์€ ํŠน์ • ์‚ฌํ•ญ์€ #16863์„ ์ฐธ์กฐํ•˜์„ธ์š”.
  • @RandomShaper @fracteed @fire @reduz ํ‘œ์ค€ ์žฌ๋ฃŒ์— ๋Œ€ํ•œ ํ† ๋ก ์„ ์ „์šฉ ๋ฌธ์ œ๋กœ ์˜ฎ๊ฒจ์ฃผ์„ธ์š”.

์•ˆ๋…•ํ•˜์‹ญ๋‹ˆ๊นŒ,
๋‹ค๋ฅธ API์˜ ๊ด€ํ–‰์„ ๋”ฐ๋ฅด๊ณ  ํด๋ž˜์Šค(๋˜๋Š” ๋ฉ”์„œ๋“œ๊นŒ์ง€)์— ๋Œ€ํ•ด ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”/์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ฆ‰, ์ด์ „ ์ด๋ฆ„์€ ๋‹จ์ˆœํžˆ ์ƒˆ ์ด๋ฆ„์— ๋Œ€ํ•œ ๋ณ„์นญ/ํฌ์ธํ„ฐ์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ค‘์ง€๋˜๊ณ  ๋ฒ„์ „ 5์—์„œ ์ด๋ฆ„์ด ์‚ญ์ œ๋˜์–ด ์˜ํ–ฅ์„ ๋ฐ›๊ฑฐ๋‚˜ ์•Œ์•„์ฐจ๋ฆด ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์ด์ ๋„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. IDE๋Š” ์ด ํƒœ๊ทธ๋ฅผ ์‰ฝ๊ฒŒ ์„ ํƒํ•˜์—ฌ ๋…ธ๋“œ ์„ ํƒ ์ฐฝ์— ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹จ์ˆœํžˆ '๊ณต๊ฐ„'์ด๋ผ๊ณ  ๋งํ•˜๋Š” ๋Œ€์‹  '๊ณต๊ฐ„(๋…ธ๋“œ 3D ์‚ฌ์šฉ)'์„ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  2. ๊ทธ๋Ÿฌ๋ฉด ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๊ฐ€ ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ์— ํ‘œ์‹œ๋˜๋Š” ๋‚ด์žฅ ๊ฒฝ๊ณ ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์ด๋ฆ„ ๋ฐ”๊พธ๊ธฐ ๋„๊ตฌ๋ฅผ ๋งŒ๋“œ๋Š” ์‚ฌ๋žŒ์„ ๋ง‰์ง€ ์•Š์Šต๋‹ˆ๋‹ค...

๋ช‡ ๊ฐ€์ง€ ์ƒ๊ฐ:

์ผ๊ด€์„ฑ์„ ๊ฐœ์„ ํ•˜๊ณ  API๋ฅผ ๋” ์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ช‡ ๊ฐ€์ง€ ๋ฉ”์„œ๋“œ ๋ฐ ์†์„ฑ(#16863์˜ ํ˜„์žฌ ๋ชฉ๋ก ์ฐธ์กฐ)๊ณผ ๋…ธ๋“œ ์ด๋ฆ„ ๋ณ€๊ฒฝ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. 2D / 3D ๊ตฌ๋ถ„์„ ๋ช…ํ™•ํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€ ์ƒ๊ฐ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ์ผ๊ด€๋˜๊ฒŒ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ์–ธ๊ธ‰ํ•œ MeshInstance3D๋„ ๋งˆ์ฐฌ๊ฐ€์ง€). ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ํ˜„์žฌ ๋…ธ๋“œ์™€ 4.0์˜ ์ƒˆ ์ด๋ฆ„์„ ๋‚˜์—ดํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  TileMap/GridMap๊ณผ ๊ฐ™์€ ํŠน์ • ๋…ธ๋“œ์— ๋Œ€ํ•ด ๊ฑฐ๊ธฐ์—์„œ ์ž์ „๊ฑฐ๋ฅผ ํƒˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋ฐฉ์‹์ด๋ผ๋Š” ๊ฒƒ์ด ํ™•์ธ๋˜๋ฉด ์•ž์œผ๋กœ ์ด ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ๋ฅผ ๋งŒ๋“ค๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๊ฐ€๋Šฅํ•œ ํ•œ ํ˜ธํ™˜์„ฑ ์†์ƒ์„ ์ œํ•œํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Juan์ด ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์—”์ง„ ๋‚ด๋ถ€์—์„œ ํ˜ธํ™˜์„ฑ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜์—ฌ ์ด์ „ ์žฅ๋ฉด์„ ๋กœ๋“œํ•˜๊ณ  ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@RandomShaper ์™€ @chucklepie๊ฐ€ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์ด๋ฆ„์„ ๋ฐ”๊พธ๋Š” ๋ชจ๋“  ๋…ธ๋“œ, ๋ฉ”์„œ๋“œ, ์†์„ฑ, ์ƒ์ˆ˜, ์‹ ํ˜ธ ๋“ฑ์— ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ณ„์นญ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์˜ ์ฝ”๋“œ. IDE์—์„œ ์ด ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ๋ฌธ์ œ ์—†์ด 4.0์˜ 3.x ์ž์Šต์„œ๋ฅผ ๋”ฐ๋ฅผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ƒˆ๋กœ์šด ์ด๋ฆ„์— ๋Œ€ํ•ด ์‰ฝ๊ฒŒ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ๋ฐ”์ธ๋”ฉ์„ ๋“ฑ๋กํ•  ๋•Œ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ณ„์นญ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋„์šฐ๋ฏธ ๋ฉ”์„œ๋“œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. #23023์€ ๊ทธ๋Ÿฌํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ์ฒซ ๋ฒˆ์งธ ์‹œ๋„์ด์ง€๋งŒ 4.0์—์„œ ํ•„์š”ํ•œ ๊ฒƒ์— ์ถฉ๋ถ„ํ•˜์ง€ ์•Š๋‹ค๋ฉด ์—ฌ์ „ํžˆ ๊ฒ€ํ† , ๋ณ‘ํ•ฉ ๋ฐ ํ™•์žฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ณ„์นญ์€ ์ „์ฒด 4.x ๋ฆด๋ฆฌ์Šค ์ฃผ๊ธฐ ๋™์•ˆ ์œ ์ง€๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ 5.0์—์„œ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค.
๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ž˜ ๋””์ž์ธํ•˜๊ณ  ๋ณ‘ํ•ฉ ํ•  ๋•Œ๊นŒ์ง€ ํ˜ธํ™˜์„ฑ์„ ๊นจ๋Š” ์ด๋ฆ„ ๋ณ€๊ฒฝ์— ๋ฐ˜๋Œ€ํ•  ๊ฒƒ์ด๋ฏ€๋กœ, ์ด์— ๊ด€์‹ฌ์ด ์žˆ๋Š” ์‚ฌ๋žŒ์€ ๋ˆ„๊ตฌ๋“ ์ง€ ์ด PR์„ ์‹œ๋„ํ•˜๊ณ  ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ณ€๊ฒฝ์„ ์ œ์•ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์–ธ์ œ , ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ํ˜ธํ™˜์„ฑ์„ ๋‹ค์‹œ ๊นจ๊ณ  ์‹ถ๋‹ค๋ฉด ์ง€๊ธˆ์ด๋ผ๊ณ  ์ฃผ์žฅํ•ฉ๋‹ˆ๋‹ค. 5.0์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. 5.0์— ๋„๋‹ฌํ•˜๋ฉด ๋” ๋งŽ์€ ์ฝ˜ํ…์ธ ๊ฐ€ ์“ธ๋ชจ์—†๊ฒŒ ๋  ๊ฒƒ์ด๊ณ , Godot 4๋กœ ๊ฐœ๋ฐœ ์ค‘์ธ ๋งŽ์€ ํ›Œ๋ฅญํ•œ ๊ฒŒ์ž„๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ๊นจ๋ฉด Godot๋ฅผ ์•ˆ์ •์ ์ธ ๊ฐœ๋ฐœ ๋„๊ตฌ๋กœ ๋ฌ˜์‚ฌํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. .NS.

Godot์˜ ์‚ฌ์šฉ์ž ๊ธฐ๋ฐ˜์€ ๋งค๋…„ ๊ฑฐ์˜ ๋‘ ๋ฐฐ๋กœ ์ฆ๊ฐ€ํ•˜๋ฏ€๋กœ ํ•ด๊ฐ€ ์ง€๋‚ ์ˆ˜๋ก ๋ฆฌํŒฉํ† ๋ง์ด ๋œ ํ˜„์‹ค์ ์ด ๋ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ํฐ ์‚ฌ์šฉ์ž ๊ธฐ๋ฐ˜์˜ ๊ด€์„ฑ์ด ํ˜ธํ™˜์„ฑ์„ ๊นจ๋Š” ์ด์ ์„ ๋Šฅ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. Unity๋‚˜ Unreal๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ์—”์ง„์ด Godot์— ๋น„ํ•ด API ์ธก๋ฉด์—์„œ ์ƒ๋Œ€์ ์œผ๋กœ ์•ˆ์ •์ ์œผ๋กœ ๋ณด์ธ๋‹ค๋ฉด ๋ฆฌํŒฉํ† ๋งํ•˜๊ฑฐ๋‚˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ณ  ์‹ถ์€ ๊ฒƒ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ด ์•„๋‹ˆ๋ผ ๊ทธ๋Ÿด ์—ฌ์œ ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์•„์ง ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ธฐํšŒ๋ฅผ ์ด์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ Godot 3.0์—์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์˜€๊ณ  ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ๋น„๊ต์  ์ƒ์ฒ˜๋ฅผ ๋ฐ›์ง€ ์•Š๊ณ  ๋‚˜์™”์ง€๋งŒ 3.0์œผ๋กœ ํฌํŒ…ํ•  ์—ฌ์œ ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— 2.1์„ ๊ณ ์ˆ˜ํ•˜๋Š” ์‚ฌ์šฉ์ž์˜ ๋น„์œจ์ด ์ ์Šต๋‹ˆ๋‹ค. 4.0์˜ ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์˜ ๋ฒ”์œ„๊ฐ€ ํ›จ์”ฌ ์ค„์–ด๋“ค๊ณ  ํฌํŒ… ์ž‘์—…์ด ๊ฐ„๋‹จํ•ด์•ผ ํ•˜์ง€๋งŒ ๊ทธ ๋™์•ˆ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ๋‹ค์–‘ํ•˜๊ฒŒ ์„ฑ์žฅํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ํ˜ธํ™˜์„ฑ ์†์ƒ์˜ ์˜ํ–ฅ์€ 3.0์˜ ๊ฒฝ์šฐ๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ํด ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€/๋ˆ„์  ์‚ฌ์šฉ์ž ์„ฑ๊ฐ€์‹ฌ์˜ ์กฐ๊ฑด:)

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

์ด๋ฆ„ ๋ฐ”๊พธ๊ธฐ์˜ ๊ฒฝ์šฐ ํ•™์Šตํ•  ์ž๋ฃŒ์— ํŒจํ„ด์ด ์žˆ์œผ๋ฉด ํ•™์Šต ๊ณก์„ ์„ ์ค„์ด๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Node2D ๋Œ€ Node3D ๋“ฑ์€ ๋‹ค๋ฅธ ๋ชจ๋“  ๋…ธ๋“œ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฆฌ์ฒ˜๋Ÿผ ๋ณด์ด๋ฉด ์–ด๋–ป๊ฒŒ ์ง„ํ–‰๋˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์˜ค๋ฆฌ ๋˜๋Š” ๋…ธ๋“œ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค.
์ธ๊ฐ„์˜ ๋‘๋‡Œ๋Š” ์ตœ์ ํ™”๋œ ์–‘์ž ์ปดํ“จํ„ฐ๋กœ ์ž‘๋™ํ•˜๋ฉฐ, ์‹œ์Šคํ…œ์˜ ๊ฐ€์žฅ ๋‚ฎ์€ ์—๋„ˆ์ง€ ์ƒํƒœ๋ฅผ ์„œ๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ์•„์ด๋””์–ด ๊ฐ„์˜ ๋…ผ๋ฆฌ์  ๊ฒฝ๋กœ๋ฅผ ๋งŒ๋“ค์–ด ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค. ํ•™์Šตํ•  ์•„์ด๋””์–ด๊ฐ€ ๋น„์Šทํ•˜๋ฉด ๊ฐ€์žฅ ๋‚ฎ์€ ์—๋„ˆ์ง€ ์ƒํƒœ๊ฐ€ ์„œ๋กœ ๋” ๊ฐ€๊น๊ธฐ ๋•Œ๋ฌธ์— ์—ฐ๊ฒฐ(๋ฐ ๊ธฐ์–ต)์ด ๋” ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฌ์ „์— 2D๋ฅผ ๋ฐฐ์› ๋‹ค๋ฉด ํ•™์ƒ์ด 3D๋ฅผ ๋” ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ด์œ ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. . ๋…ธ๋“œ ์ด๋ฆ„์ด ๋…ธ๋“œ ๊ฐ„์˜ ์œ ์‚ฌ์„ฑ์„ ๋ฐ˜์˜ํ•˜๋Š” ๊ฒฝ์šฐ ์œ ์‚ฌํ•œ ์œ ํ˜•์— ์ง€์‹์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ƒˆ ์œ ํ˜•์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๊ณ  ์ดํ•ดํ•˜๋Š” ๊ฒƒ๋„ ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹น์‹ ์ด ์›ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ˜ธํ™˜์„ฑ์„ ๋ฆฌํŒฉํ† ๋งํ•˜๊ณ  ์ค‘๋‹จํ•˜๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ์ ์€ ์ˆ˜์˜ ์‚ฌ์šฉ์ž๋ฅผ ์žƒ๋”๋ผ๋„ ์‚ฌ์šฉ์ž ์นœํ™”์„ฑ์„ ๋†’์ด๊ณ  ํ•™์Šต ๊ณก์„ ์„ ์ค„์ด๋ฉด ๋” ๋งŽ์€ ๊ฒƒ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์™€ ๊ด€๋ จํ•˜์—ฌ Blender 2.80์„ ์˜ˆ๋กœ ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด์ „๊ณผ ์ง€๊ธˆ์ด ์–ด๋–ป๊ฒŒ ๋ณด์ด๊ณ  ํ–‰๋™ํ•˜๋Š”์ง€ ๋น„๊ตํ•˜์‹ญ์‹œ์˜ค. ๋งŽ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์†Œํ”„ํŠธ์›จ์–ด ์ž‘๋™ ๋ฐฉ์‹์„ ๋‹ค์‹œ ๋ฐฐ์šฐ๋„๋ก ํ•˜๋Š” ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ์ด์ œ ๋ธ”๋ Œ๋”๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์‚ฌ์šฉ์ž๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ์ƒ๊ฐํ•ด๋ณด์‹ญ์‹œ์˜ค. Godot์™€ ๋น„๊ตํ•˜๋ฉด ๊ฑฐ๋Œ€ํ•˜์ง€๋งŒ ์–ด์จŒ๋“  ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋Œ€ํญ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค. ์™œ์š”? ์ƒˆ๋กœ์šด ์›Œํฌํ”Œ๋กœ๋กœ ์ „ํ™˜ํ•  ์ธ๋‚ด์‹ฌ์ด ์—†๋Š” ์ผ๋ถ€ ์‚ฌ์šฉ์ž๋ฅผ ์žƒ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋”๋ผ๋„ ์žฅ๊ธฐ์ ์œผ๋กœ ํ•™์Šต ๊ณก์„ ์„ ์ค„์ด๊ณ  ์‚ฌ์šฉ์ž ์นœํ™”์„ฑ์„ ๊ฐœ์„ ํ•˜๋Š” ๊ฒƒ์ด ํ•ญ์ƒ ๋” ์œ ๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด ๊ฒฝ์šฐ์— ํš๊ธฐ์ ์ธ ๋ณ€ํ™”์— ์ฐฌ์„ฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์œ ๊ธฐ์ ์œผ๋กœ ์„ฑ์žฅํ•œ ๋ช…๋ช… ๊ทœ์น™์— ๋Œ€ํ•ด ๋Š๋ผ๋Š” ์ขŒ์ ˆ๊ฐ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ด‘๋ฒ”์œ„ํ•˜๊ณ  ํš๊ธฐ์ ์ธ ๋ณ€๊ฒฝ์„ ์ •๋‹นํ™”ํ•˜๋Š” ์–ด๋–ค ๊ฒƒ๋„ ๋ณด์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

์ €๋Š” ๋ฉ€๋ฆฌ ์˜ฎ๊ธฐ๊ณ ์ž ํ•˜๋Š” API๋ฅผ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์ง€๋งŒ(์ปดํŒŒ์ผ ์‹œ ๋ฐ ๋ฌธ์„œ์—์„œ ํ”Œ๋ž˜๊ทธ ์ง€์ •) ์ด์ƒ์ ์œผ๋กœ๋Š” ์ด์ „ ๋…ธ๋“œ ์ด๋ฆ„์ด ์ด์ „๊ณผ ๊ฐ™์ด ๊ณ„์† ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ๋ช‡ ๋…„ ์•ˆ์— ์™„์ „ํžˆ ๊ณ ํ†ต์Šค๋Ÿฝ์ง€ ์•Š๊ฒŒ ๋œ ๋ ˆ๊ฑฐ์‹œ ๋…ธ๋“œ ์ด๋ฆ„์„ ์ค‘๋‹จํ•  ๋•Œ๊ฐ€ ๋˜์—ˆ๋Š”์ง€ ๋ฌผ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋•Œ๊นŒ์ง€ ๋‚ด ์ œ์•ˆ์€ ์›ํ•˜๋Š” ๋Œ€๋กœ ์ƒˆ ์ด๋ฆ„์„ ์ถ”๊ฐ€ํ•˜๊ณ (๋‚˜๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๊ฐ•ํ•œ ์˜๊ฒฌ์ด ์—†์Œ) ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ๊นจ๋œจ๋ฆฌ์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@fratteed ์‹ค์ œ๋กœ ๋‹ค๋ฅธ ํ…์Šค์ฒ˜์˜ ์ฑ„๋„์— ๊นŠ์ด๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์€ ์ข‹์€ ์ƒ๊ฐ์ด ์•„๋‹ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹œ์ฐจ ๋งคํ•‘์€ ํ•ด๋‹น ํ…์Šค์ฒ˜์— ๋งŽ์€ ํƒญ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋งค๋ฒˆ ๋ถˆํ•„์š”ํ•˜๊ฒŒ RGB๋ฅผ ๊ฐ€์ ธ์˜ค๋„๋ก ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‹จ์ผ ๊ทธ๋ ˆ์ด์Šค์ผ€์ผ ํ…์Šค์ฒ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ Godot๋Š” ํฌ๊ธฐ๋ฅผ ์ ˆ๋ฐ˜์œผ๋กœ ์••์ถ•ํ•˜์—ฌ ๋Œ€์—ญํญ์„ ์ ˆ์•ฝํ•ฉ๋‹ˆ๋‹ค.

ํ‘œ์ค€ ์ž๋ฃŒ์— ORM ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์€ ์ƒ๊ฐ์ผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@chucklepie ๋ฌธ์ œ๋Š” ๋ชจ๋“  ์–ธ์–ด๊ฐ€ typedef์™€ ๊ฐ™์€ ํด๋ž˜์Šค ๋ณ„์นญ์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. C#๋„ ๊ทธ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

@reduz ์•„,

ํŽธ์ง‘ํ•˜๋‹ค. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค Akien, ์ด๊ฒƒ์„ ๊ฒŒ์‹œํ•˜๊ณ  ๋‚˜์„œ์•ผ ๊ท€ํ•˜์˜ ๋Œ“๊ธ€์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค...

@neikeq ๋ฌธ์ œ๋Š” ๋ชจ๋“  ์–ธ์–ด๊ฐ€ typedef์™€ ๊ฐ™์€ ํด๋ž˜์Šค ๋ณ„์นญ์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. C#๋„ ๊ทธ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

๋„ค์ดํ‹ฐ๋ธŒ C++ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„๋˜์—ˆ๋Š”์ง€๋Š” ๋ชจ๋ฅด์ง€๋งŒ ๋„ค์ดํ‹ฐ๋ธŒ C++ ์ˆ˜์ค€์—์„œ ์ด ๋ฐ์ฝ”๋ ˆ์ดํŒ…์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ์—…์ŠคํŠธ๋ฆผ ์–ธ์–ด ๋ฐ”์ธ๋”ฉ์ด ๋ฌด์—‡์ธ์ง€๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ๋Œ€ํ•ด ๋” ๋งŽ์ด ์–ธ๊ธ‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜์ง€ ์•Š๋‹ค๋ฉด ๊ฐ ์–ธ์–ด์— ๋Œ€ํ•œ ๋ฐ”์ธ๋”ฉ์„ ์ œํ’ˆ๊ตฐ์— ์‰ฝ๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: C#์˜ ์†์„ฑ ์‚ฌ์šฉ ๋“ฑ).

@gerald1248 ๋‚ด ๊ฒŒ์‹œ๋ฌผ์„ ์ฝ์œผ์‹ญ์‹œ์˜ค. ๋‚ด๊ฐ€ ์–ธ๊ธ‰ํ•œ ๊ณณ ์–ด๋””์—์„œ๋„ ์ค‘๋‹จ๋  ๊ฒƒ์ด๋ผ๊ณ  ์–ธ๊ธ‰ํ•œ ๊ณณ์€ ์—†์Šต๋‹ˆ๋‹ค. 3.x์—์„œ ์ƒ์„ฑ๋œ ํ”„๋กœ์ ํŠธ๋Š” ๋กœ๋“œ ๋ฐ ์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ณ„์นญ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ„์† ์ž‘๋™ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์„ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์šฉ ์ค‘๋‹จ ๊ฒฝ๊ณ ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€๋งŒ ํ”„๋กœ์ ํŠธ๋Š” ๊ณ„์† ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์˜ ์—ด๋ ฌํ•œ ํŒฌ์ด๋‹ค

ํƒ์ƒ‰ -> Nagivagion3D

์ด๋ฆ„์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด ์š”์ฒญ์„ ๋‘ ๋ฒˆ์งธ๋กœ!

@reduz ๋Š” ๋‹ค์Œ๊ณผ
@TwistedTwigleg ๋‚ด ๊ฒŒ์‹œ๋ฌผ์„ ์ฝ์–ด

๋‚ด ๋‚˜์œ, ๋‚˜๋Š” ๊ฒŒ์‹œ๋ฌผ์˜ ๊ทธ ๋ถ€๋ถ„์„ ๋†“์ณค๋‹ค.

๋‚ด๋ถ€ ํ˜ธํ™˜์„ฑ ์‹œ์Šคํ…œ์€ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์— ๋„์›€์ด ๋˜๋ฉฐ ํŠนํžˆ #23023๊ณผ ๊ฐ™์€ ํ•ญ๋ชฉ๊ณผ ๊ฒฐํ•ฉ๋˜๋Š” ๊ฒฝ์šฐ "๋ณ€๊ฒฝ" ์ธก๋ฉด์—์„œ ์ €๋ฅผ ๋” ๋งŽ์ด ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด ๋ณ€๊ฒฝ ์ด์ „์— ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด ๊ณ„ํš๋œ ๊ฒƒ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•„๋Š” ๊ฒƒ์€ ์ข‹์€ ์†Œ์‹์ด๋ฉฐ ์ด ์ œ์•ˆ์— ๋Œ€ํ•ด ๊ฐ€์ง€๊ณ  ์žˆ๋˜ ๋งŽ์€ ์šฐ๋ ค๋ฅผ ๋œ์–ด์ค๋‹ˆ๋‹ค.

@Norrox ๋Š” ๋‹ค์Œ๊ณผ
@TwistedTwigleg 3d ๊ฒŒ์ž„ ์ถœ์‹œ์™€ ๊ด€๋ จํ•˜์—ฌ 4.0๊ณผ Vulcan์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค ๐Ÿ˜Ž

๊ทธ๊ฒƒ์€ ๊ณต์ •ํ•˜๋‹ค.
ํŠนํžˆ Godot 4.0์—์„œ ์ œ๊ณต๋˜๋Š” Godot์˜ 3D ์ธก๋ฉด์— ๋Œ€ํ•œ ๊ฐœ์„  ์‚ฌํ•ญ์„ ๊ณ ๋ คํ•  ๋•Œ, 3D ๋ฌด๊ฑฐ์šด ํ”„๋กœ์ ํŠธ์—์„œ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์€ ๋‚˜์˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3d ๋ฐ 2d ์ฐจ๋ณ„ํ™”๋Š” ์ด๋ฏธ ์ผ๊ด€์„ฑ์ด ๋ช…ํ™• ํ•ฉ๋‹ˆ๋‹ค. 3d ๋…ธ๋“œ๋Š” ๋ฐ์€ ๋นจ๊ฐ„์ƒ‰, 2d ๋…ธ๋“œ๋Š” ํŒŒ๋ž€์ƒ‰, ui โ€‹โ€‹๋…ธ๋“œ๋Š” ๋…น์ƒ‰์ž…๋‹ˆ๋‹ค. ์ด๋ฆ„ ์ง€์ •์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ์‚ฌ์šฉ์ž๋Š” ํ•ญ์ƒ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋์ด ์—†๋Š” ๋ฌธ์ œ์ด๋ฉฐ ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ทœ๋ชจ์— ๋”ฐ๋ผ ๊ณฑํ•ด์ง€๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

OP์—์„œ ์ œ์•ˆ๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๊ณผ ๊ด€๋ จํ•˜์—ฌ: 2d ๋…ธ๋“œ์—๋Š” ์ด๋ฏธ "2D" ์ ‘๋ฏธ์‚ฌ๊ฐ€ ์ ์šฉ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” _๋ณธ์งˆ์ ์œผ๋กœ ํ•ด๋‹น ๋…ธ๋“œ๊ฐ€ 3d์ž„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ Label ์—์„œ TextLabel ๋กœ์˜ ๋ณ€๊ฒฝ์— ์ฐฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ( @MuffinManKen ์€ ํ›Œ๋ฅญํ•œ ์ง€์ ์„ ํ•ฉ๋‹ˆ๋‹ค)

์ €๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์—ฌ๊ธฐ์— ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์ „์ ์œผ๋กœ ์ง€์ง€ํ•˜์ง€๋งŒ "Sprite2D/Sprite3D" ์งˆ๋ฌธ๊ณผ ๊ด€๋ จํ•˜์—ฌ 2D ์ ‘๋ฏธ์‚ฌ๊ฐ€ ์ถ”๊ฐ€ ์–‘์˜ ํด๋Ÿฌํ„ฐ(IMO)๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ ์™ธ์— ๋‹ค๋ฅธ ์ด์œ ๊ฐ€ ์—†๋‹ค๋ฉด Sprite๋ฅผ Sprite๋กœ ๋‚จ๊ฒจ๋‘๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

@girng๊ฐ€ ๋งํ–ˆ๋“ฏ์ด ์šฐ๋ฆฌ๊ฐ€ ํ”ผํ•  ํ˜ผ๋ž€์— ํ›Œ๋ฅญํ•œ ๊ธธ์ด์— ๊ฐˆ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค ์žˆ๋„๋ก 2D / 3D์˜ ์ฐจ๋ณ„ํ™”๋Š” ์ด๋ฏธ ์ปฌ๋Ÿฌ ์ฝ”๋”ฉ์œผ๋กœ ์ธํ•ด ๋งค์šฐ ๋ถ„๋ช…ํ•˜๋‹ค. Godot ๊ฐœ๋ฐœ์ž์˜ ๊ด€์ ์—์„œ, ์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ๋‚ด ํ”„๋กœ์ ํŠธ์—์„œ ์ด๋ฆ„์ด ๋ฐ”๋€Œ์ง€ ์•Š์€ ๋ชจ๋“  ๋…ธ๋“œ์— -2D๋ฅผ ๋ถ™์ด๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. :NS

๊ทธ ์ƒ‰ ๊ตฌ๋ถ„์ด ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ ์ƒ‰๋งน์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋„์›€์ด ๋ฉ๋‹ˆ๊นŒ?
(๋Œ€ํ™” ์ƒ์ž์—์„œ ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๊ณผ๋Š” ๋Œ€์กฐ์ ์œผ๋กœ) ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•  ๋•Œ๋Š” ํ™•์‹คํžˆ ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@reduz ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋ฉ”์ด์ € ๋ฒ„์ „์„ ์œ„ํ•œ ๊ฒƒ์ด๊ณ  ๋”ฐ๋ผ์„œ semver ์˜๋ฏธ์—์„œ ์™„์ „ํžˆ ๊ดœ์ฐฎ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ๋‚˜๋Š” ๋ฉ”์ด์ € ๋ฒ„์ „์— ๋Œ€ํ•ด์„œ๋„ ์ด์™€ ๊ฐ™์€ ๋ณ€๊ฒฝ์„ ํ”ผํ•˜๊ณ  ์‹ถ์ง€๋งŒ ์ด๊ฒƒ์ด ๋ฌธ์ œ์ธ์ง€ ์•„๋‹Œ์ง€์— ๋Œ€ํ•ด ํ›จ์”ฌ ๋” ์ž˜ ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ฃผ์š” ๋ฒ„์ „(์˜ˆ: python2์—์„œ python3์œผ๋กœ)์— ๊ฑธ์นœ ํฐ ๋ณ€๊ฒฝ ๋‚ด์—ญ์„ ๋ณด๊ณ  ์žˆ์œผ๋ฉฐ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ถˆ์ผ์น˜(๋˜๋Š” ์ƒˆ ๋…ธ๋“œ ์ด๋ฆ„๊ณผ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋…ธ๋“œ)๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์–ด๋Š ์ชฝ์ด๋“  ์ €๋Š” Godot๋ฅผ ์‚ฌ๋ž‘ํ•˜๊ณ  ์–ด๋–ค ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ๋”๋ผ๋„ ๊ณ„์† ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ๋” ๋ช…์‹œ์ ์ธ ๊ฒƒ์„ ์„ ํ˜ธํ•˜๊ณ  ๋ชจ๋“  ๊ฒƒ์„ ํ•ญ์ƒ 2D/3D๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๋ฉด ์ž์œ ๋กญ๊ฒŒ ์ œ์•ˆํ•˜์‹ญ์‹œ์˜ค.

๋ช…์‹œ์ ์ธ ๊ฒƒ์ด ์•”์‹œ์ ์ธ ๊ฒƒ๋ณด๋‹ค ๋‚ซ์Šต๋‹ˆ๋‹ค.

@girng @AlexHoratio ํŽธ์ง‘๊ธฐ์—์„œ ๋‹ค๋ฅธ ์ƒ‰์ƒ์„ ๊ฐ–๋Š” ๋…ธ๋“œ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํ˜ผ๋ž€์ด ์ƒ๊ธฐ๋Š” ๊ฒƒ ๊ฐ™์•„์š”.

(๋‚˜๋Š” ์—ฌ์ „ํžˆ Sprite3D๊ฐ€ ์กด์žฌํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋ฅผ ์ „ํ˜€ ์•Œ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์—”์ง„์€ ๋™์ผํ•œ ๋ชฉ์ ์œผ๋กœ ์ฟผ๋“œ ๋ฉ”์‹œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Sprite๊ฐ€ ๋…์ ์ ์œผ๋กœ 2D ์šฉ์–ด์ธ ๊ฒฝ์šฐ ๋” ์‰ฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.)

@gimg , @AlexHoratio ์ธ๊ตฌ์˜ 4.5%๊ฐ€ ์ƒ‰๋งน์ด๋ผ๋Š” ๊ฒƒ๋„ ์žŠ์ง€ ๋งˆ์„ธ์š” :stuck_out_tongue:

์ด๋ฆ„์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ์€ ์ข‹์€ ์ƒ๊ฐ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
2D์—์„œ 3D๋กœ์˜ ์ „ํ™˜์ด ํ›จ์”ฌ ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค. ์ ์–ด๋„ 2D๋กœ ์‹œ์ž‘ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” (์•„๋งˆ๋„ ๊ทธ ๋ฐ˜๋Œ€์ผ ์ˆ˜๋„ ์žˆ์Œ)

๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ•˜๊ณ  ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ๋Š” ์ข‹์€ ์ƒ๊ฐ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” Godot์— ํŽธํ–ฅ๋˜์–ด ์žˆ๊ณ  ๊ฐ์ •์ ์œผ๋กœ ๋„ˆ๋ฌด ์• ์ฐฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ƒํƒœ์— ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ์‹ค์ œ๋กœ ์ดํ•ด๋˜์ง€ ์•Š๋Š” ์ƒ๊ฐ์„ ์ƒ์„ฑํ•˜์ง€๋งŒ, ์•„๋ฆ„๋‹ค์šด ๋ฐฉ์‹์œผ๋กœ ๋‚˜์—๊ฒŒ๋Š” ์™„๋ฒฝํ•˜๊ฒŒ ์ดํ•ด๋˜๋Š” ์ƒ๊ฐ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์„ค๋ช…ํ•˜๊ธฐ ์–ด๋ ค์šด. ๋‚ด ์ƒ๊ฐ์„ ๋งํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

์ผ๊ด€์„ฑ์„ ์œ„ํ•ด ์ด๋ฆ„์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๋Š” ์ผ๋ฐ˜์ ์ธ ํ•ฉ์˜์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ ๋‹น์žฅ์€ ๋…ธ๋“œ์˜ ํ•œ ์„ธํŠธ๊ฐ€ "1๊ธ‰"์ด๊ณ  ๋‹ค๋ฅธ ๋…ธ๋“œ๊ฐ€ "2๊ธ‰"์ธ ๊ฒƒ์ฒ˜๋Ÿผ ์™ธ๋ถ€์ ์ธ ์ธ์ƒ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฐœ์ธ์ ์œผ๋กœ Sprite -> Sprite2D ์ด ์™„์ „ํžˆ ์—„๊ฒฉํ•œ ๋ช…์‹œ์  ์ด๋ฆ„ ๋ณ€๊ฒฝ์˜ ๋ถˆํ–‰ํ•œ ํฌ์ƒ์ž๊ฐ€ ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ, ์ง€์น  ๋•Œ๊นŒ์ง€ ๋‚ด๊ฐ€ ๋งŒ๋“œ๋Š” ๋ชจ๋“  ์žฅ๋ฉด์—์„œ ํ•ญ์ƒ ์ˆ˜๋™์œผ๋กœ Sprite๋กœ ์ด๋ฆ„์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์˜.

CanvasLayer ๋ฐ CanvasItem ๊ฐ€ ๊ทธ๋ฃนํ™”๋˜์ง€ ์•Š๊ณ  Node2D ๊ฐ€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์ง€์ ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ Control์ด ์žˆ๋Š” CanvasItem ๋‚ด๋ถ€์— ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๋ถˆ์พŒํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@akien-mga๊ฐ€ ์ด๊ฒƒ์ด ๋…ธ๋“œ์˜ ์ด๋ฆ„ ๋ณ€๊ฒฝ๋งŒ์„ ์œ„ํ•œ ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•œ ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์ ์–ด๋„ position vs. translation ์— ๋Œ€ํ•œ ๋…ผ์Ÿ์ด ์—ฌ๊ธฐ์—์„œ ์ž‘๋™ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋…ธ๋“œ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋Š” ๋ชฉ์ ์ด API๊ฐ€ ์ƒ๋‹นํžˆ ๋‹ค๋ฅธ ๊ฒฝ์šฐ(์ขŒํ‘œ๊ณ„ ๊ฐ„์˜ ์ฐจ์ด๋ฅผ ์ œ์™ธํ•˜๊ณ ) ๋‹ค์†Œ ๋‹จํ˜ธํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์—ฌ๊ธฐ๋กœ ๊ฐ€๋Š” ๊ธธ๋กœ "ํฌ์ง€์…˜"์— ํˆฌํ‘œํ•  ๊ฒƒ์ด๋‹ค. "๋ฒˆ์—ญ"์— ๋น„ํ•ด ์˜คํ•ด์˜ ์†Œ์ง€๊ฐ€ ์žˆ๋‹ค๋Š” ์˜๊ฒฌ์ด ์žˆ์—ˆ๋‹ค. "๋ณ€ํ™˜"์€ ๋‹จ์ˆœํžˆ ์ขŒํ‘œ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ณ€ํ˜• ๋˜๋Š” ์ด๋™์„ ์˜๋ฏธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜คํ•ด์˜ ์†Œ์ง€๊ฐ€ ์žˆ๋‹ค๊ณ  ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์œ„์น˜๋Š” ์ง๊ด€์ ์œผ๋กœ ์ƒ๋Œ€์ ์ž…๋‹ˆ๋‹ค(๋‚˜์นจ๋ฐ˜ ๋ฐฉํ–ฅ๊ณผ ๊ด€๋ จํ•˜์—ฌ ์˜์ž๋ฅผ ๊ณง๊ฒŒ ํŽด์ง€ ์•Š๊ณ  ๋ฐฉ์˜ ๋ฒฝ์„ ๊ธฐ์ค€์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค).

๋ณ€์ˆ˜ ์ด๋ฆ„์€ ๋‘ ๊ฐ€์ง€ ๋ชจ๋‘์— ๋Œ€ํ•ด ์ด๋ฆ„์ด ์ง€์ •๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ translate ํ•จ์ˆ˜๋Š” ๊ทธ๋Œ€๋กœ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ Node2D move_local ํ•จ์ˆ˜๋ฅผ translate_local ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ๋ฌธ์„œ๋„ ๋ฒˆ์—ญ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ฆฌ ์šด๋™๊ณผ ๊ธฐํ•˜ํ•™์  ๋ณ€ํ™˜์„ ๊ตฌ๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ๋ฌผ๋ฆฌ ๊ด€๋ จ ๋…ธ๋“œ์— move ๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด ํ›„๋ฐ˜๋ถ€์˜ ๋งŽ์€ ๋ถ€๋ถ„์ด #16863๊ณผ๋„ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ @reduz , ๋‚ด ์ƒ๊ฐ์— C#์ด ์—”์ง„์—์„œ ๊ธฐ๋Šฅ์„ ์–ป์Œ์— ๋”ฐ๋ผ ์ ์  ๋” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด C#์šฉ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์›ํ•  ๊ฒƒ์ด๋ฉฐ, ์ผ๋‹จ C#์— ์žˆ์œผ๋ฉด ๋งŽ์€ gdscript ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์–ธ์–ด๋ฅผ ์ „ํ™˜ํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ๋ฅผ ์›ํ•œ๋‹ค๊ณ  ์ƒ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ์„ ์œ„ํ•ด. ๋‚˜๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ๊ถ๊ทน์ ์ธ C# ์ง€์›์— ์™„์ „ํžˆ ํ•„์ˆ˜์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. gdscript์˜ ๊ฒฝ์šฐ ์ด์ ์€ ํ›จ์”ฌ ๋œ ๊ทน์ ์ด์ง€๋งŒ ์‚ฌ์šฉ์ž ๊ฑฑ์ • ์—†์ด ํ”Œ๋Ÿฌ๊ทธ ์•ค ํ”Œ๋ ˆ์ด ํŒจํ‚ค์ง€๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ ์•„์ด๋””์–ด๊ฐ€ ๋– ์˜ฌ๋ž์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๊ตฌํ˜„๋˜๋ฉด "๋‹จ์ˆœํ•œ ๋…ธ๋“œ ์ด๋ฆ„"์ด๋ผ๋Š” ํŽธ์ง‘๊ธฐ ์„ค์ •์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ๋…ธ๋“œ์—๋Š” ์ด๋ฆ„์— ์ ‘๋ฏธ์‚ฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ƒˆ๋กœ์šด "Whatever2D"๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์ด๋ฆ„์„ "๋ฌด์—‡์ด๋“ "์œผ๋กœ ์ง€์ •ํ•˜์ง€๋งŒ ํ•ด๋‹น ๋…ธ๋“œ์˜ ์Šคํฌ๋ฆฝํŠธ๋Š” ์—ฌ์ „ํžˆ "ํ™•์žฅ Whatever2D" ๋“ฑ์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋…ธ๋“œ๋ฅผ ๋งŒ๋“  ๋‹ค์Œ ์ˆ˜๋™์œผ๋กœ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ํ™œ์„ฑํ™”ํ•˜๊ธฐ๋กœ ์„ ํƒํ•œ ๊ฒฝ์šฐ ๊ณ„์ธต์—์„œ "2D" ๋˜๋Š” "3D" ๊ธฐ๋ณธ ์ด๋ฆ„์„ ๋ณด๋Š” ํ˜ผ๋ž€์„ ํ”ผํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ์ฝ”๋“œ๋ฅผ ๋ณด๋‹ค ์ผ๊ด€๋˜๊ณ  ๋ช…์‹œ์ ์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. "3D"๊ฐ€ ํฌํ•จ๋œ 3D ๋…ธ๋“œ๊ฐ€ ์—†์œผ๋ฉด ํ˜ผ๋ž€์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ์ง€๋งŒ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋์— "3D"๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค.

@aaronfranke ๊ฝค

@aaronfranke ํ˜„๋ช…ํ•œ ์•„์ด๋””์–ด๋ฅผ

@aspenforest ๋งคํ•‘์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ํฐ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์ง€๋งŒ ์•„๋งˆ๋„ ์—”์ง„์˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ˆœ์ง„ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@aaronfranke ์˜ ์•„์ด๋””์–ด๋กœ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์ƒ์„ฑ ์‹œ ๋…ธ๋“œ์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. (์ƒˆ๋กœ์šด ์žˆ๋„๋ก ์ƒˆ๋กœ snake_case ๋˜๋Š” ์ฒ™์ถ”์˜ ๊ฒฝ์šฐ์— ๋…ธ๋“œ ์ด๋ฆ„์„ ์ƒ์„ฑ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค ProjectSettings์˜ ๊ธฐ์กด ์„ค์ •๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ MeshInstance ๋…ธ๋“œ๊ฐ€ ์ž๋™์œผ๋กœ ์ด๋ฆ„์„ ์ง€์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค mesh_instance ๋Œ€์‹  MeshInstance ) ๋‹ค๋ฅธ ์„ค์ •์€ ๋…ธ๋“œ ์ด๋ฆ„์—์„œ "2D"๋˜๋Š” "3D"์ ‘๋ฏธ์‚ฌ๋ฅผ ์ œ๊ฑฐ ํ•  ๊ฒƒ์ด๋‹ค, ๋…ธ๋“œ ์ ‘๋ฏธ์‚ฌ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (์ƒˆ๋กœ์šด ์žˆ๋„๋ก Sprite2D ๋…ธ๋“œ ์ด๋ฆ„์„ ๋ฐ”๋กœ ์–ป์„ Sprite ).

์•„๋ฌด๋„ KinematicBody2D ๋˜๋Š” Particles2D ๋Œ€ํ•ด ๋ถˆํ•„์š”ํ•œ "2D" ์ ‘๋ฏธ์‚ฌ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๋ถˆํ‰ํ•˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ "3D" ์ ‘๋ฏธ์‚ฌ ์ถ”๊ฐ€๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ƒ๋Œ€๋ฐฉ์— ๋Œ€ํ•ด ... ์‚ฌ์šฉ์ž๊ฐ€ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ด๋Ÿฌํ•œ ์ ‘๋ฏธ์‚ฌ๋ฅผ ์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ด ์ œ์•ˆ์€ ํ๊ธฐ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์™ธ๊ด€์ƒ์˜ ์ด์œ ๋กœ IDE์—์„œ ๋…ธ๋“œ์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค...

@akien-mga ์ด๊ฒƒ์€ ์ƒˆ ๋…ธ๋“œ ์ด๋ฆ„์„ "์ฃผ๋ณ€์— ์ž‘์—…"ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋‚˜์—๊ฒŒ ๋” ๋งŽ์€ ๊ทธ๋ ˆ์ด๋น„ ์†Œ์Šค์ด๋ฉฐ ์ผ๊ด€๋œ ์ด๋ฆ„ ์ง€์ • ์ฒด๊ณ„๋กœ ํ•ดํ‚น๋˜์ง€ ์•Š์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฝ”๋”ฉ์„ ํ•  ๋•Œ, ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๋ฌธ์„œ๋ฅผ ์ฐพ์„ ๋•Œ ์ ‘๋ฏธ์‚ฌ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ผ๋‹จ ๊ทธ๋“ค์ด ํ•œ ์žฅ๋ฉด์— ๋“ค์–ด๊ฐ€๋ฉด ๋‚˜๋Š” ๊ทธ๋“ค์ด ๋ฌด์—‡์ธ์ง€ ์•Œ๊ณ  ์žˆ๊ณ  ์–ด์จŒ๋“  ๋งŽ์€ ๊ฒƒ๋“ค์ด ์‚ฌ์šฉ์ž ์ •์˜ ์ด๋ฆ„์„ ๊ฐ–๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋ฆ„์„ ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ๊ณผ ์ด๋ฆ„์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ํŽธ์ง‘๊ธฐ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด์•ผ ํ•œ๋‹ค๋ฉด ์ „์ž๋ฅผ ์„ ํƒ ํ•˜๊ฒ ์ง€๋งŒ @aaronfranke ๋Š” ์ด ์ œ์•ˆ์— ๋Œ€ํ•œ ๋ฐ˜๋Œ€๊ฐ€ ๊ทผ๋ณธ์ ์œผ๋กœ ์ดํ•ดํ•˜๊ณ  ์žˆ์—ˆ๋˜ ๊ฒƒ

๋‚˜๋Š” ํ™•์‹คํžˆ ํŽธ์ง‘๊ธฐ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์ด๊ฒƒ์„ ํฌํ•จํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ž์ฒด ๋ฌธ์ œ/PR์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ฒ˜์Œ์— SpatialMaterial์ด ์ด์ƒํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ”ผํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋งŒํผ ๊ฐ•๋ ฅํ•œ ํด๋ž˜์Šค๋‹ค. ๋Œ€์‹  3๋ฉด ๋งคํ•‘๋œ ์•Œ๋ฒ ๋„+ao+๋…ธ๋ฉ€๋กœ ์…ฐ์ด๋”๋ฅผ ์ฝ”๋”ฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ SpatialMaterial์—์„œ ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ ๋‹ค์Œ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋” ๋‚˜์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด๊ฐ€ ํ•œ ๋ชจ๋“  ์ž‘์—…์ด ํ—›๋œ ๊ฒƒ์ž„์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋” ์นœ๊ทผํ•œ ์ด๋ฆ„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋ช…์‹œ์  2D/3D ์ด๋ฆ„์˜ ๊ฒฝ์šฐ +1์ž…๋‹ˆ๋‹ค.

๋ฏธ๋ž˜์— ์‚ฌ์šฉ ์ค‘๋‹จ์œผ๋กœ ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ๋Š” ๋…ธ๋“œ์— ๋Œ€ํ•ด ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚ด๊ฐ€ ์ƒ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์กด์žฌ๋Š” ์ด๋ฆ„ ์ง€์ • ๊ด€์ ์—์„œ ํ˜ผ๋ž€์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์‹œ์Šคํ…œ์ด ์‚ญ์ œ๋œ ์ดํ›„๋กœ ๊ธฐ๋ณธ์ ์œผ๋กœ ์„œ๋กœ ์•„๋ฌด๋Ÿฐ ๊ด€๋ จ์ด ์—†๋Š” AnimationTree ๋ฐ AnimationTreePlayer๋ผ๋Š” ๋‘ ๊ฐœ์˜ ๋…ธ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@SaracenOne ๊ทธ๋Ÿฐ ์งˆ๋ฌธ์„ ํ•˜๊ธฐ์— ์ ๋‹นํ•œ ๊ณณ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ๋Š” 2D/3D ์ ‘๋ฏธ์‚ฌ์— ๋Œ€ํ•ด์„œ๋งŒ ๋…ผ์˜ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋ฆ„ ๋ณ€๊ฒฝ์— ๋Œ€ํ•ด ๋” ์ผ๋ฐ˜์ ์œผ๋กœ ๋…ผ์˜ํ•˜๊ธฐ ์œ„ํ•œ ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. https://github.com/godotengine/godot/issues/16863

๋‚˜๋Š” ์•„๋งˆ๋„ 4.0์—์„œ ํ—ˆ์šฉ๋˜๋Š” ํ˜ธํ™˜์„ฑ ์†์ƒ์˜ ๋ฒ”์œ„๋ฅผ ๋„˜์–ด์„ค ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์•„๋งˆ๋„ ๋‹จ์ˆœํžˆ ์‹คํ–‰ ๋ถˆ๊ฐ€๋Šฅ/ํ—ˆ์šฉ๋  ์ˆ˜ ์—†์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๋ชจ๋“  2D/3D ๋…ธ๋“œ๊ฐ€ 2D ๋˜๋Š” 3D์ธ ๋‹จ์ผ ๋…ธ๋“œ ์œ ํ˜•์—์„œ ์ƒ์†๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋…ธ๋“œ์— ๋Œ€ํ•œ API์—๋Š” ๋‘ ๋ฒ„์ „์— ๋Œ€ํ•ด ๊ธฐ๋Œ€ํ•˜๋Š” ๋ชจ๋“  ๊ธฐ๋Šฅ์ด ํฌํ•จ๋˜๋ฉฐ ํ•ด๋‹น ๊ตฌํ˜„์€ ์ด ํŠน์ • ํ•ญ๋ชฉ์ด 2D์ธ์ง€ 3D์ธ์ง€์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

์ด๋ก ์ ์œผ๋กœ ์ด๋Ÿฌํ•œ ์‹œ์Šคํ…œ์€ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. 2D/3D ๋Œ€์‘ ๊ฐ„์— ์ผ๊ด€๋œ API๋ฅผ ๋งŒ๋“ค๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ์ด ์ผ๊ด€์„ฑ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ํ•˜๋‚˜์—๋Š” ํฌํ•จํ•  ํ•„์š”๊ฐ€ ์—†์ง€๋งŒ ๋‹ค๋ฅธ ํ•˜๋‚˜์—๋Š” ํฌํ•จํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ๋ณด๊ธฐ์— ์žฅ์ ์ด์ž ๋‹จ์ ์ž…๋‹ˆ๋‹ค.
  2. ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์œ ํ˜•์ด ๋” ์‰ฝ๊ฒŒ ์ƒํ˜ธ ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ฑฐ๋‚˜ ๋…ธ๋“œ์˜ 2D ๋ฐ 3D ๋ฒ„์ „ ๋ชจ๋‘์— ์ฒจ๋ถ€ํ•˜๋ ค๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•˜์‹ญ์‹œ์˜ค.

"SomeClass2D์—๋Š” x, y, z๊ฐ€ ๊ตฌํ˜„๋˜์–ด ์žˆ์ง€๋งŒ SomeClass3D์—๋Š” ๊ทธ๋Ÿฐ ๊ฒƒ์ด ์ „ํ˜€ ์—†๋Š”" ์ƒํ™ฉ์„ ํ”ผํ•˜๋Š” ๊ฒƒ์ด ์ข‹์œผ๋ฉฐ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์ด๋ฆ„ ์ง€์ • ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ์ง€๊ธˆ ์ƒ๊ฐํ•˜๊ณ  ์žˆ์ง€ ์•Š์€ ๋ช‡ ๊ฐ€์ง€ ์ด์œ ๋กœ ๊ธฐ๋…๋น„์ ์œผ๋กœ ์–ด๋ฆฌ์„์€ ์ผ์ด์ง€๋งŒ, ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋ฒ„๋ฆด ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

@vortexofdoom ์ด๋ฏธ ์ผ์–ด๋‚œ ์ผ์ž…๋‹ˆ๋‹ค. Node2D๋Š” ๋ชจ๋“  2D ๋…ธ๋“œ์— ์ƒ์†๋˜๊ณ  Spatial์€ ๋ชจ๋“  3D ๋…ธ๋“œ์— ์ƒ์†๋ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ๋ชจ๋“  ๊ฒƒ์„ ๋ฌด์—‡์ด๋ผ๊ณ  ๋ถ€๋ฅผ ๊ฒƒ์ธ๊ฐ€์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋” ์ค‘์š”ํ•œ ๊ฒƒ์€ Spatial ๋ฐ Node2D Node ์—์„œ ์ƒ์†๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@vortexofdoom ์˜ ์•„์ด๋””์–ด์—๋Š” ํด๋ž˜์Šค ๊ณ„์ธต ๊ตฌ์กฐ์—์„œ ๋‹ค๋ฃจ์ง€ ์•Š๋Š” ๊ฒƒ์ด ์—ฌ์ „ํžˆ ์žˆ๋‹ค๊ณ  ๋งํ•˜๊ณ  ์‹ถ์ง€๋งŒ ๊ทธ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ์ •ํ™•ํžˆ ๊ฒฐ์ •ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  Resource ํŒŒ์ƒ ํด๋ž˜์Šค์— - Res ์ ‘๋ฏธ์‚ฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๋„์›€์ด ๋ ๊นŒ์š”?

@aaronfranke ๊ฐ ์œ ํ˜•์˜ ๋…ธ๋“œ(๋‹จ์ˆœํžˆ KinematicBody ๋˜๋Š” Sprite) ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ฐ–๋Š” ์•„์ด๋””์–ด๋ฅผ ์–ธ๊ธ‰ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ์ตœ์ƒ์œ„ ๋…ธ๋“œ๋Š” ํ–‰๋™์„ ์ง€์‹œํ•˜๋Š” ์ผ์ข…์˜ Node2D3D ์ž…๋‹ˆ๋‹ค. ์ž˜ ์„ค๋ช…๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 2D ๊ณ„์ธต ๊ตฌ์กฐ์™€ 3D ๊ณ„์ธต ๊ตฌ์กฐ๊ฐ€ ์•„๋‹ˆ๋ผ 2D/3D ๊ณ„์ธต ๊ตฌ์กฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒƒ๋ณด๋‹ค ๋” ํฐ ๋ฆฌํŒฉํ„ฐ๊ฐ€ ๋  ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ์œ ํ˜•์„ ์ž์ฒด์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋„๋ก _ํ•  ์ˆ˜_ ์žˆ์ง€๋งŒ ์‹ค์ œ ๋…ธ๋“œ๊ฐ€ ๋˜๋ ค๋ฉด 2D/3D๋กœ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋…ธ๋“œ ์ด๋ฆ„์— ๋Œ€ํ•ด ๋‹ค์‹œ 1๋กœ ๋Œ์•„๊ฐ€์ง€๋งŒ ์ƒ์†์ด ๋” ๋งŽ์Šต๋‹ˆ๋‹ค. 2D์™€ 3D ๊ฐ„์— ์ž๋™์œผ๋กœ ์ง์ ‘ ์—ฐ๊ฒฐ๋˜๊ณ  ์‹œ์Šคํ…œ ๊ฐ„์˜ ์ƒํ˜ธ ์ž‘์šฉ์ด ์—ฌ์ „ํžˆ ๋” ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค(๋‚ด ์ƒ๊ฐ์—).

@vortexofdoom ๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ๋กœ 2D์™€ 3D ๊ฐ„์— ๊ณต์œ ๋˜๋Š” ๊ฒƒ์€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์ผ๋ถ€ ๋™์ผํ•œ ๋…ธ๋“œ ์œ ํ˜•๊ณผ ๋™์ผํ•œ ๋ฉ”์†Œ๋“œ ์ด๋ฆ„์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ ๊ฑฐ์˜ ๋ชจ๋“  ๊ตฌํ˜„์ด ์™„์ „ํžˆ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๋‹น์‹ ์˜ ์•„์ด๋””์–ด๊ฐ€ if (is2d) { do 2d stuff } else { do 3d stuff } ํ•˜๊ณ  ์ฝ”๋“œ ํŒŒ์ผ์„ ๋‘ ๋ฐฐ๋‚˜ ๊ธธ์–ด์„œ ์ „ํ˜€ ์ฝ์„ ์ˆ˜ ์—†๊ฒŒ ๋งŒ๋“ค ๊ฒƒ์ด๊ธฐ โ€‹โ€‹๋•Œ๋ฌธ์— ๋‚ด๊ฐ€ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ๊ณต์œ ๋Š” ์ธํ„ฐํŽ˜์ด์Šค์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฐ€๋ณ€ ๋™์ž‘์ด ์žˆ๋Š” ๋‹จ์ผ ํด๋ž˜์Šค์˜ ์‹คํ˜„ ๊ฐ€๋Šฅ์„ฑ์€ ์ตœ์ƒ์œ„ 2D/3D ๋…ธ๋“œ๊ฐ€ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌด๊ฑฐ์šด ์ž‘์—…์˜ ์–‘์— ๋”ฐ๋ผ ํ™•์‹คํžˆ ๋‹ฌ๋ผ์ ธ ์ถ”์ƒํ™”๋ฅผ ๋” ์•„๋ž˜๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ํ˜„์žฌ ์กด์žฌํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ ํ•จ๊ป˜ ํ†ตํ•ฉํ•˜๋Š” ๊ฒƒ์€ ํ™•์‹คํžˆ ๋ฌธ์ œ์˜ ๊ฐ€์น˜๊ฐ€ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ €๋Š” ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์žฌ๊ตฌ์„ฑ์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๊ฒ ์ง€๋งŒ ์—ฌ์ „ํžˆ ๋‹ค๋ฅธ ์œ ํ˜•์— ๋Œ€ํ•ด ์ ์–ด๋„ ์–ด๋Š ์ •๋„์˜ ํ‘œ์ค€ํ™” ์ˆ˜์ค€์„ ์‹œํ–‰ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ์•„์ด๋””์–ด๋Š” ๋…ธ๋“œ์˜ ์ผ๋ฐ˜ ๋ฒ„์ „์—์„œ ์ƒ์†๋ฐ›์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— 2D ๋ฐ 3D ๋ฒ„์ „์ด ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ๋ชจ๋“  ๊ฒƒ์„ ๋‘ ๋ฒˆ ๊ตฌํ˜„ํ•  ํ•„์š”๊ฐ€ ์—†์—ˆ์œผ๋ฉด ํ•˜๋Š” ์œ ํœด ํฌ๋ง์— ์˜ํ•ด ์ด‰๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋…ธ๋“œ๊ฐ€ ์œ ์ผํ•œ ๊ณตํ†ต ์กฐ์ƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ง€๊ธˆ ๋‹น์žฅ์€ ๋…ธ๋“œ์—์„œ ์ƒ์†์„ ๋ฐ›๊ณ  ์–ด๋–ค ์‹์œผ๋กœ๋“  ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ์ผ๋ถ€ ์บ์ŠคํŒ…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Node2D3D (๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์šฐ์Šค๊ฝ์Šค๋Ÿฝ๊ฒŒ ๋“ค๋ฆฌ๋Š”์ง€ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค)๋Š” ๋‘ ์ขŒํ‘œ๊ณ„๊ฐ€ ์„œ๋กœ ๋” ์ž˜ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์ผ์ง€๋ผ๋„ ์–ด๋Š ์ •๋„ ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์ด๋Š” ์™„์ „ํžˆ ๋‹ค๋ฅธ ๋””์ž์ธ ๋ฌธ์ œ์— ์ ‘๊ทผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ๋ณด๋‹ค. ๊ณ๊ธธ๋กœ ๋น ์ ธ์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

@RandomShaper ํŠนํžˆ ๊ฐ„๋‹จํ•œ ์ด๋ฆ„ ์˜ต์…˜์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ด์ ์„ ํ™•์‹คํžˆ ์•Œ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ์˜๊ฒฌ์€ ํ›„์†์„ ์œ„ํ•ด ๋‚จ๊ฒจ๋‘์ง€๋งŒ, ๊ณ„์ธต ๊ตฌ์กฐ๋Š” ๋Œ€๋ถ€๋ถ„ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜๋ฉด์„œ ์—„๊ฒฉํ•œ 2D/3D ๋ช…๋ช… ์ฒด๊ณ„์— ์ฐฌ์„ฑํ•˜์—ฌ ๋‚ด ์ œ์•ˆ์„ ์ฒ ํšŒํ•ฉ๋‹ˆ๋‹ค.

๊ทธ ์ด์œ ๋Š” ๋ชจ๋“  ๋…ธ๋“œ์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด๋‹น ํด๋ž˜์Šค ์ด๋ฆ„์„ ๋ชจ๋‘ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ฆ‰, KinematicBody ๋˜๋Š” CollisionObject ๊ณผ ๊ฐ™์€ ๊ณ ์œ ํ•œ ํด๋ž˜์Šค ์„ธํŠธ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋‚ด๊ฐ€ ์ฐพ๋˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ด€๋ จ ๊ธฐ๋Šฅ์„ ๊ฐ€์ ธ์™€ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š”

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ ๊ทน๋‹จ์ ์ธ ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋„ RoomGroup ์™€ ๊ฐ™์€ ๊ฒƒ์„ ๋น ๋ฅธ ์˜ˆ์ œ๋กœ ๊ณ ์•ˆํ•˜๋Š” ๋Œ€์‹  Area ์™€ ๊ฐ™์€ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋…ผ์˜๋˜๊ณ  ์žˆ์–ด ๋งค์šฐ ๊ธฐ์ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์™„๋ฃŒ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ๋งํ–ˆ๋Š”์ง€๋Š” ๋ชจ๋ฅด์ง€๋งŒ ์ผ๊ด€์„ฑ์„ ์œ„ํ•ด ์ด๋ฆ„์ด ๋ฐ”๋€Œ๋ฉด ์™„์ „ํ•œ ์ผ๊ด€์„ฑ (์ธ๊ฐ„์ ์œผ๋กœ ๊ฐ€๋Šฅํ•œ ํ•œ)์œผ๋กœ ๊ฐ€๊ณ  ํŠน์ • ๋ฐฉ๋ฒ•์˜ ์ด๋ฆ„๋„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์‹œ:

Geometry.get_closest_point_to_segment()    # <-- this is the 3D version
Geometry.get_closest_point_to_segment_2d()

๋…ธ๋“œ์™€ ๋ฉ”์„œ๋“œ ์™ธ์—๋„ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ๊ฐ€์ • Transform ๋กœ ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค Transform3D ์ค„์„ ๊ฐ€์ง„ Transform2D ์žˆ์ง€๋งŒ Basis ์•„๋งˆ์žˆ์„ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค Basis3D Transform2D ๋‚ด์— ๋ชจ๋‘ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ Basis2D ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

@RandomShaper

๋ชจ๋“  Resource ํŒŒ์ƒ ํด๋ž˜์Šค์— - Res ์ ‘๋ฏธ์‚ฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๋„์›€์ด ๋ ๊นŒ์š”?

๊ฐ€์„ฑ๋น„์— ๋น„ํ•ด ์–‘์ด ๋„ˆ๋ฌด ์ ์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ ๊ฐ•์กฐ ํ‘œ์‹œ๋ฅผ ์œ„ํ•œ ๋‚ด ์ œ์•ˆ(#31054)์— ๋ฆฌ์†Œ์Šค๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฐ ํˆฌํ‘œํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. tbh. ๋‹ค๋ฅธ ์ƒ‰์ƒ์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ํด๋ž˜์Šค ์ด๋ฆ„ ์ž…๋ ฅ์„ ๋งˆ์น˜์ž๋งˆ์ž ๊ธฐ๋ณธ ์œ ํ˜•์ด ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค(Vector ๋ฐ AABB์™€ ๊ฐ™์€ ๋‚ด์žฅ ์œ ํ˜•๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ).

Screenshot_6
2D์™€ 3D๋กœ ๋ถ„๋ฆฌ๋œ ํ”„๋กœ์ ํŠธ๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

(2d๋ฅผ UI๋กœ, 3d๋ฅผ Scene์œผ๋กœ ๋Œ€์ฒดํ•˜๋Š” ์ด๋ฏธ์ง€ ์ œ์•ˆ).

ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ์ž‘์—…ํ•  ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
ํด๋ž˜์Šค ์ด๋ฆ„์— ๋” ์ด์ƒ ์ ‘๋ฏธ์‚ฌ(2D, 3D)๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ ์ผ์ข…์˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ์ด๋Ÿฌํ•œ ์œ ํ˜• ๊ฐ„์— ๋” ์ด์ƒ ํ˜ผํ•ฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Godot2D ์‚ฌ์šฉ
Godot3D ์‚ฌ์šฉํ•˜๊ธฐ;

3d ๋˜๋Š” 2d ํ”„๋กœ์ ํŠธ์— ์žˆ์„ ๋•Œ - UI๋ฅผ ํด๋ฆญํ•˜๋ฉด ํŽธ์ง‘ GUI๋ฅผ ์œ„ํ•œ UI(2D) ์ฐฝ์ด ์žˆ๊ณ  ์žฅ๋ฉด์„ ํด๋ฆญํ•˜๋ฉด ์žฅ๋ฉด์— ์žˆ์Šต๋‹ˆ๋‹ค(2d ๋˜๋Š” 3d๋Š” ํ”„๋กœ์ ํŠธ ์œ ํ˜•์— ๋”ฐ๋ผ ๋‹ค๋ฆ„).

๊ทธ๋Ÿฐ ์‹์œผ๋กœ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์—์„œ UI์— ๋Œ€ํ•ด 2d ๋ชจ๋“œ๋ฅผ ์œ ์ง€ํ•˜์ง€๋งŒ Scene์€ 2d ๋˜๋Š” 3d ์ฐฝ์„ ์—ฝ๋‹ˆ๋‹ค.

Screenshot_1

์ด ์ฐฝ์—์„œ๋Š” ํ”„๋กœ์ ํŠธ ์œ ํ˜•(2d ๋˜๋Š” 3d)๊ณผ ๊ด€๋ จ๋œ ์—”ํ„ฐํ‹ฐ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฑฐ๋‚˜ ๋‘˜ ๋‹ค์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๊ณต์œ ๋ฉ๋‹ˆ๋‹ค.

UI ๋ชจ๋“œ์—์„œ ์ƒˆ ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์ด ์ฐฝ์—๋Š” UI์™€ ๊ด€๋ จ๋œ ๊ตฌ์„ฑ ์š”์†Œ๋งŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
์žฅ๋ฉด ๋ชจ๋“œ์—์„œ UI ์ปจํŠธ๋กค์ด ํ‘œ์‹œ๋˜์ง€ ์•Š์œผ๋ฉด ์žฅ๋ฉด์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ•ญ๋ชฉ๋งŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

@dmitryuck ๊ฒŒ์‹œํ•œ ์ด๋ฏธ์ง€์˜ ๊ฒฝ์šฐ 2D ๋ฒ„ํŠผ์ด ํ•ญ์ƒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. 3D ๊ฒŒ์ž„๋„ UI ๋ฐ ๊ธฐํƒ€ ํ•ญ๋ชฉ์— Godot์˜ 2D ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์–ด์จŒ๋“  2D์™€ 3D๋ฅผ ํ˜ผํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์ˆ ์ ์œผ๋กœ 2D ๊ฒŒ์ž„์€ 3D ๋ฒ„ํŠผ์„ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†์ง€๋งŒ ์ˆจ๊ธธ ํ•„์š”๋Š” ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค.

์œ„์—์„œ ๋‚˜๋Š” ์‹œ๊ฐ์ ์œผ๋กœ ๋ถˆํ•„์š”ํ•œ ์ ‘๋ฏธ์‚ฌ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ๊ณ„์ธต ๊ตฌ์กฐ์—์„œ ๋…ธ๋“œ ์ด๋ฆ„์„ ์™ธ๊ด€์ƒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ œ์•ˆํ–ˆ์ง€๋งŒ ์ฝ”๋“œ๊ฐ€ ํ•ญ์ƒ ๋ช…์‹œ์ ์ด๋ฉด ๋” ์ข‹์Šต๋‹ˆ๋‹ค.

@aaronfrank ๋‚˜๋Š” ์ด์ „ ์ฝ”๋ฉ˜ํŠธ์—์„œ ๋‚ด๊ฐ€ ์˜๋ฏธํ•˜๋Š” ๋ฐ”์— ๋Œ€ํ•œ ์•ฝ๊ฐ„์˜ ๊ด‘๋ฒ”์œ„ํ•œ ์„ค๋ช…์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ƒํ™ฉ์— ๋”ฐ๋ผ ๋…ธ๋“œ ์ด๋ฆ„์„ ๋‹ค๋ฅด๊ฒŒ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์€ ํ˜ผ๋ž€์„ ๊ฐ€์ค‘์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ๋žŒ๋“ค์€ ์ฒซ๋ˆˆ์— ๋Œ€๋ณธ๊ณผ ์žฅ๋ฉด ํŠธ๋ฆฌ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ˜‘์—…, ๋ช…ํ™•ํ•œ ํŠœํ† ๋ฆฌ์–ผ ๋“ฑ์„ ์œ„ํ•ด ํ•„์ˆ˜๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@dmitryuck ์ผ๋ถ€ ํ”„๋กœ์ ํŠธ๋Š” 2D์™€ 3D๋ฅผ ํ˜ผํ•ฉํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ผ๋ถ€ ๊ฒŒ์ž„์—๋Š” 3D UI๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@Skaruts ๋Š” ์ด ํŽธ์ง‘๊ธฐ์™€ ๊ฐ™์€ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ 3D ์žฅ๋ฉด์—์„œ 2D ๋ณด๊ธฐ๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Screenshot_1

๋ฌผ๋ก  UI ๋ชจ๋“œ๋Š” ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์˜ ํ”„๋กœ์ ํŠธ์— ๋ชจ๋‘ ์กด์žฌํ•ด์•ผ ํ•˜์ง€๋งŒ ๊ทธ๋ฆฌ๋“œ, ํ–ฅ์ƒ๋œ ์Šค๋ƒ…, ๋ˆˆ๊ธˆ์ž ๋“ฑ๊ณผ ๊ฐ™์ด UI๋ฅผ ์œ„ํ•ด ํŠน๋ณ„ํžˆ ์ œ์ž‘๋œ ๋„๊ตฌ๊ฐ€ ์žˆ๋Š” ๋ณ„๋„์˜ ์ฐฝ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@reduz ์ด๋ฆ„ ๋ณ€๊ฒฝ์€ ์ข‹์€ ์ผ์ด์ง€๋งŒ ์˜ˆ๋ฅผ ๋“ค์–ด 4.0์—์„œ 5.0์œผ๋กœ์˜ ์ „ํ™˜ ๊ธฐ๊ฐ„์ด ๊ธธ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” https://godotengine.org/qa์˜ ๋งŽ์€ ์ž์Šต์„œ์™€ ๋‹ต๋ณ€์— ๊ตฌ์‹์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

@xxmatxx ์ด๋ฆ„ ๋ฐ”๊พธ๊ธฐ๊ฐ€ ์งง์€ ์ „ํ™˜ ๊ธฐ๊ฐ„์œผ๋กœ ๋ฐœ์ƒํ•˜์—ฌ '๋ฌด์—‡์ด ๋  ๊ฒƒ์ธ๊ฐ€' ์ด์ „ ์ด๋ฆ„์„ ๋Œ์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ, ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ž˜ ๋ฌธ์„œํ™”ํ•˜๊ณ  Godot์— ๋ง‰ ๋ง‰ํžŒ ์‚ฌ๋žŒ๋“ค์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ์•Œ ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ฒ„์ „์˜ ๋…ธ๋“œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Œ์„ ์•Œ๋ ค์ฃผ๋Š” ํŽธ์ง‘๊ธฐ ๋‚ด ๊ฒฝ๊ณ ๋Š” ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์ด ์ด๋ฅผ ์žŠ์–ด๋ฒ„๋ฆฐ ๊ฒฝ์šฐ์—๋„ ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆด์ˆ˜๋ก ์‚ฌ๋žŒ๋“ค์„ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒ ํ•  ๊ธฐํšŒ๊ฐ€ ๋” ๊ธธ์–ด์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. @AtomaFajrovulpo๊ฐ€ ์ œ์•ˆํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ํŽธ์ง‘๊ธฐ๊ฐ€ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ํ•ญ๋ชฉ์„ ๊ณ„์† ํ—ˆ์šฉํ•˜์ง€๋งŒ ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๊ฒฝ์šฐ ์ž์Šต์„œ ๋ฐ ๋ฌธ์„œ๊ฐ€ ์ฆ‰์‹œ ๊ตฌ์‹์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์ƒ๊ฐํ•˜๋Š”์ด ๋ผ์ธ์„ ๋”ฐ๋ผ ๋ญ”๊ฐ€ :

Node type 'Spatial' is deprecated and replaced by 'Node3D'. 

๊ทธ๋ฆฌ๊ณ 

Method 'clip_polygon()' is deprecated and replaced by 'clip_polygon_3d()'. 

๋‚˜๋Š” ์ƒ์ˆ˜๊ฐ€ ๋ชจ๋‘ ๊ฐ™์€ ๊ฒฝ์šฐ๋ฅผ ๋”ฐ๋ฅด์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์–ด์ œ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Color.black ๋ฐ Vector3.UP ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ 4.0์— ๋Œ€ํ•ด ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•ด์•ผ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

@BenjaminNavarro ์ƒ‰์ƒ ์ƒ์ˆ˜๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ๋„ https://github.com/godotengine/godot/pull/14704 ํ•˜๋‹จ์—์„œ ๋…ผ์˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค

๋˜ํ•œ ๋ฉ”์†Œ๋“œ/์‹œ๊ทธ๋„/์ƒ์ˆ˜ ์ด๋ฆ„ ๋ณ€๊ฒฝ์€ #16863์—์„œ ๋…ผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ํŠนํžˆ ๋…ธ๋“œ ์ด๋ฆ„์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@Calinou ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค, ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ–ˆ์ง€๋งŒ ์ฐพ์„ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” 4.0์—์„œ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ณ  ๋‚ด๊ฐ€ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ๋” ์„ฑ์žฅํ•œ ํ›„์— ๋‚˜์ค‘์— ์˜ฌ ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ๋๋‚ด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ๋ฆด๋ฆฌ์Šค๊ฐ€ ๊ทธ๊ฒƒ์„ ํ•  ์‹œ๊ฐ„์ด ์•„๋‹ˆ๋ผ๋ฉด ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

SemVer: MAJOR.MINOR.PATCH ๋ฒ„์ „ ๋ฒˆํ˜ธ๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ๋‹ค์Œ์„ ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค.
ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” API ๋ณ€๊ฒฝ ์‹œ MAJOR ๋ฒ„์ „,
์ด์ „ ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ MINOR ๋ฒ„์ „ ๋ฐ
์ด์ „ ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜๋Š” ๋ฒ„๊ทธ ์ˆ˜์ • ์‹œ PATCH ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.

์ด๊ฑธ๋กœ ์–ด๋””๊นŒ์ง€ ๊ฐˆ๊นŒ?

๊ทธ๋Ÿฌ๋ฉด GridMap์ด TileMap3D๊ฐ€ ๋˜๊ณ  Tilemap Tilemap2D๊ฐ€ ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฉ๋‹ˆ๊นŒ?

๋˜ํ•œ node2D์™€ node3D๋Š” ์•ฝ๊ฐ„ ์ผ๋ฐ˜์ ์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ Spatial2D์™€ Spatial3D๊ฐ€ ์—†๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

UX์˜ ํฐ ์ฐจ์ด์ ์€ ์ด๋ฆ„์ด ๋ฌด์—‡์ด๋“  ์ œ์–ด, node2D ๋ฐ ๊ณต๊ฐ„์ด ์žˆ๊ณ , ๋น„๋ก node2D์™€ ์ œ์–ด๊ฐ€ CanvasItem์—์„œ ์ƒ์†๋˜์ง€๋งŒ ์ƒˆ ๋…ธ๋“œ ๋Œ€ํ™” ์ƒ์ž์˜ ๋…ธ๋“œ ์•„๋ž˜์—์„œ ์ง์ ‘ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด์จŒ๋“  CanvasItem์„ ํŠธ๋ฆฌ์— ์ง์ ‘ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ํ•ด๋‹น ๋Œ€ํ™” ์ƒ์ž์— ํ‘œ์‹œ๋˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ฉ”์†Œ๋“œ๊ฐ€ ์ง„ํ–‰๋˜๋Š” ํ•œ, 2D ๋˜๋Š” 3D ์ ‘๋ฏธ์‚ฌ๋ฅผ ์ถ”๊ฐ€ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋Š๋ฆฐ ๋ฆฌ์†Œ์Šค ๊ฐ€์ ธ์˜ค๊ธฐ ๋ฐ GD ์Šคํฌ๋ฆฝํŠธ์˜ ์„ฑ๋Šฅ ์ตœ์ ํ™”์™€ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ ์œ ์šฉํ•œ ์—…๋ฐ์ดํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ํ˜„์žฌ 1G ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ์•ฝ 1์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. 10G ์ž์›์„ ์ˆ˜์ž…ํ•˜๋ฉด ์ปดํ“จํ„ฐ ์•ž์— ์•‰์•„ ์ดํ‹€์„ ์ž์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ 700M-1G ๊ฐ€์ ธ์˜ค๊ธฐ์˜ ๋ฆฌ์†Œ์Šค ํŽธ์ง‘๊ธฐ ํŒŒ์ผ ์‹œ์Šคํ…œ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ด์ œ ์†์ƒ๋˜์–ด ์•„๋ฌด ๊ฒƒ๋„ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ ๋ชฉ๋ก, ์ด๊ฒƒ์€ ์—๋””ํ„ฐ ์ž์ฒด์˜ ๋‹จ์ ์ผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ธฐ์กด ๋ฌธ์ œ๋ฅผ ์ตœ์ ํ™”ํ•˜๊ณ  ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ด Godot์—๊ฒŒ ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. 100~500๋งŒ ์ž์›๋งŒ ์ˆ˜์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด Godot๋Š” ๋Œ€ํ˜• ๊ฒŒ์ž„์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์—†๋Š” ์šด๋ช…์ด์ง€๋งŒ ์ง€๊ธˆ์€ ๊ธธ์ด ๋ง‰ํ˜€ ์•ž์œผ๋กœ ๋‚˜์•„๊ฐˆ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ฒ„์ „์—์„œ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. Godot๊ฐ€ ๋” ์ข‹์•„์ง€๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค!

@qq715152910 ์ „ํ˜€ ๊ด€๋ จ์—†๋Š” ์ •๋ณด๋กœ ๊ธด ์Šค๋ ˆ๋“œ์— ๋Œ“๊ธ€์„

์šฐ๋ฆฌ์—๊ฒŒ ์œ ์šฉํ•œ ์ด๋ฆ„ ๋ณ€๊ฒฝ์— ๋Œ€ํ•œ ์˜๊ฒฌ์„ ์ œ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. (์ฃผ๋กœ C#์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค)

์šฐ๋ฆฌ๊ฐ€ ๊ฐ•๋ ฅํ•˜๊ฒŒ ์ œ์•ˆํ•˜๋Š” ์ด๋ฆ„ ๋ณ€๊ฒฝ:

  1. Transform.origin -> transform.origin

(๋ณ€ํ™˜ ์†์„ฑ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์†Œ๋ฌธ์ž๋กœ ๋งŒ๋“ค๊ธฐ)

์™œ์š”?
์˜ˆ๋ฅผ ๋“ค์–ด ๊ณต๊ฐ„์—๋Š” ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” Transform์ด ์žˆ์ง€๋งŒ ๋” ๋‚˜์€ ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๋ฒˆ "this.Transform.origin"์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. "Transform"์„ "transform"์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด "this"๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ„. ๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ์˜ ๊ฐœ์ธ์ ์ธ ์˜๊ฒฌ์ž…๋‹ˆ๋‹ค.

  1. "Label"์„ "TextLabel"๊ณผ ๊ฐ™์€ ๊ฒƒ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋˜๋Š” ์ ์–ด๋„ ์ƒˆ ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ "ํ…์ŠคํŠธ"๋กœ ๊ฒ€์ƒ‰ํ•  ๋•Œ "๋ ˆ์ด๋ธ”"์ด ๋‚˜ํƒ€๋‚˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์™„์ „ํžˆ ๊ด€๋ จ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

  2. ์ผ๋ถ€ ๋ฏธ๋ฆฌ ์ •์˜๋œ ์ƒ‰์ƒ์— ๋Œ€ํ•œ ์ƒ์ˆ˜๋Š” Colors ์•„๋‹Œ Color ๋กœ ์•ก์„ธ์Šคํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ œ์•ˆ๋œ ์ด๋ฆ„ ๋ณ€๊ฒฝ์˜ ๋‚˜๋จธ์ง€ ๊ธฐ๊ฐ„ ๋™์•ˆ ์šฐ๋ฆฌ๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ๋” ๋‚ซ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์„ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

AtlasTexture -> TextureAtlas

๋Š” ๋ณดํ†ต ๋‹ค์Œ๊ณผ ๋•Œ๋ฌธ์—์ด AtlasTexture๋ผ๋Š” ๊ฒƒ <Type>Texture ๊ทœ์น™์„ ๊ฒฝ์šฐ <Type> ๊ฐ€ ๋  ์ˆ˜ Image , Viewport , Stream ...

AtlasTexture -> TextureAtlas

๋Š” ๋ณดํ†ต ๋‹ค์Œ๊ณผ ๋•Œ๋ฌธ์—์ด AtlasTexture๋ผ๋Š” ๊ฒƒ <Type>Texture ๊ทœ์น™์„ ๊ฒฝ์šฐ <Type> ๊ฐ€ ๋  ์ˆ˜ Image , Viewport , Stream ...

"Atlas"๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ด๊ฒƒ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

capture212

Texture๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ด๋ ‡๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

asdasd

ํŽธ์ง‘: ์šฐ๋ฆฌ๋Š” ๊ทธ ๊ทœ์น™์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ์Šคํฌ๋ฆฐ์ƒท์—์„œ AtlasTexture ๋Š” <Type>Texture ๊ทœ์น™์„ ๋”ฐ๋ฅด๋Š” ๋‹ค๋ฅธ ๊ฒƒ๋“ค๊ณผ ํ•จ๊ป˜ ๋งค์šฐ ์›…์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ํ›„, ๊ทธ ์ ์€ ์šฐ๋ฆฌ์˜ ์ด์ „ ๊ฒŒ์‹œ๋ฌผ์—์„œ ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ์—๋Š” ์—ฌ์ „ํžˆ ์ž๋™ ์™„์„ฑ ์นœํ™”์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ๋ฐ›์•„๋“ค์ž…๋‹ˆ๋‹ค. .

@bigmonte Transform ๊ตฌ์กฐ์ฒด ๋Š” ์ด ๋ฌธ์ œ์— ๋”ฐ๋ผ Godot 4.0์—์„œ Transform3D ๋กœ ์ด๋ฆ„์ด ๋ณ€๊ฒฝ ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์†์„ฑ์ž„์„ ๋ช…ํ™•ํžˆ ํ•˜๊ธฐ ์œ„ํ•ด ๋” ์ด์ƒ this. ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘: https://github.com/godotengine/godot/pull/38430

์ผ๋ถ€ predifined ์ƒ‰์ƒ์— ๋Œ€ํ•œ ์ƒ์ˆ˜์— ์•ก์„ธ์Šคํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค Color ๋ฐ˜๋Œ€์— Colors .

๋‚˜๋Š” ์ฒ˜์Œ์— ๊ทธ๊ฒƒ์„ ์ œ์•ˆํ•œ ์‚ฌ๋žŒ์ด๋ฉฐ ๊ฐ•๋ ฅํ•˜๊ฒŒ ๋™์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—์„œ ์ž๋™ ์™„์„ฑ์„ ์‚ฌ์šฉํ•  ๋•Œ Color ์˜ ์ •์  ๋ฉค๋ฒ„(ํ˜„์žฌ Color8 , ColorN ๋ฐ FromHsv )์˜ ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ์„ฑ์„ ๋†’์ด๋ฏ€๋กœ ๋ณ„๋„๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ IDE. ๋˜ํ•œ ์ผ๊ด€์„ฑ์„ ์œ„ํ•ด GDScript์—์„œ Color.red ๋“ฑ -> Colors.RED ์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ์„ ์ œ์•ˆํ•˜๋Š” ๊ฒƒ๋„ ๊ณ ๋ คํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ๋‚˜๋Š” ๋‹น์‹ ์ด # 16863์„ ์ฐพ๊ณ  ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™์•„์š”.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰