[UE5] ๐Ÿค ์ƒํ˜ธ์ž‘์šฉ (1)

Singery00ยท2024๋…„ 4์›” 4์ผ
0

UE5 Blueprint

๋ชฉ๋ก ๋ณด๊ธฐ
13/29
post-thumbnail

๊ฐœ์š”

๐Ÿ’ก ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ž…๋ ฅ๊ณผ, ํŠธ๋ ˆ์ด์Šค๋ฅผ ์ด์šฉํ•œ ์•กํ„ฐ์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์— ๋Œ€ํ•ด์„œ ์ž‘์„ฑํ•˜๊ฒ ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ด์ „ ํฌ์ŠคํŒ…๊นŒ์ง€์˜ ์‹ค์Šต์œผ๋กœ ์บ๋ฆญํ„ฐ์˜ ๊ธฐ์ดˆ์ ์ธ ๊ธฐ๋ฐ˜์„ ๋ชจ๋‘ ์ œ์ž‘ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๊ฒŒ์ž„์—์„œ๋Š” ์บ๋ฆญํ„ฐ๋งŒ ์กฐ์ž‘ํ•˜์ง€ ์•Š์ฃ .
์ด์„ ์˜๋ฉด ํ•ด๋‹น ๋ฐ๋ฏธ์ง€๊ฐ€ ๋“ค์–ด๊ฐ€๊ณ , ์•„์ดํ…œ์„ ์ค๊ณ , ๋ฌธ์„ ์—ด๊ณ  ํ•˜๋Š” ๋“ฑ์˜ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ƒํ˜ธ์ž‘์šฉ์ด ์ผ์–ด๋‚ฉ๋‹ˆ๋‹ค.

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ƒํ˜ธ์ž‘์šฉ์— ๋Œ€ํ•ด์„œ ํ•˜๋‚˜์”ฉ ์ ์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

1. ์ƒํ˜ธ์ž‘์šฉ์„ ์œ„ํ•œ ๊ธฐ์ดˆ
2. Line Trace๋ฅผ ์‚ฌ์šฉํ•œ ์ƒํ˜ธ์ž‘์šฉ
3. Overlap Event๋ฅผ ์‚ฌ์šฉํ•œ ์ƒํ˜ธ์ž‘์šฉ
4. ์‘์šฉ


๋ณธ๋ก 

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

    1. ๋ธ”๋ฃจํ”„๋ฆฐํŠธ ํ•จ์ˆ˜ ์ œ์ž‘
      ์ด๊ฑด ์‚ฌ์‹ค ์ƒํ˜ธ์ž‘์šฉ๋ณด๋‹ค๋Š” ๊ฒŒ์ž„์ œ์ž‘์˜ ๊ธฐ์ดˆ๋ผ๊ณ  ํ•˜๋Š” ๊ฒƒ์ด ๋งž๊ฒ ์Šต๋‹ˆ๋‹ค.

    1. Trace
      ์œ ๋‹ˆํ‹ฐ๋ฅผ ํ•ด๋ณด์‹  ๋ถ„์ด๋ผ๋ฉด Raycast๋ผ๊ณ  ํ•˜์‹œ๋ฉด ์™€๋‹ฟ์„ ๊ฒ๋‹ˆ๋‹ค. ๋ ˆ์ด์ €๋ฅผ ๋ฐœ์‚ฌํ•ด์„œ ์ถฉ๋Œํ•œ ๋Œ€์ƒ์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

    1. Collision
      ์ƒํ˜ธ์ž‘์šฉ์„ ์œ„ํ•œ ์ถฉ๋Œ์— ๋Œ€ํ•œ ์„ค์ •์ž…๋‹ˆ๋‹ค. Trace๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋„ ๊ฐ€์žฅ ์ค‘์š”ํ•˜๋ฏ€๋กœ ์•”๊ธฐํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

ํ•˜๋‚˜์”ฉ ์•Œ์•„๋ด…์‹œ๋‹ค. ๐Ÿ‘


๐Ÿ—บ๏ธ ๋ธ”๋ฃจํ”„๋ฆฐํŠธ ํ•จ์ˆ˜ ์ œ์ž‘

์šฐ์„  ํ•จ์ˆ˜์˜ ๊ฐœ๋…๋ถ€ํ„ฐ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ•จ์ˆ˜๋ž€?

ํ•จ์ˆ˜๋Š” ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ์˜ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค.

์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด ์ž…๋ ฅ๊ฐ’์„ ๋„ฃ์œผ๋ฉด ์›ํ•˜๋Š” ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰์— ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๊ฐ’์ด ๋‚˜์˜ค๋„๋ก ํ•œ ๊ฒƒ์ด๋‹ค.

๋ธ”๋ฃจํ”„๋ฆฐํŠธ์— ์ต์ˆ™ํ•˜์ง€ ์•Š๋‹ค๋ฉด C++๋กœ ๋จผ์ € ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๋ณด์‹œ๊ณ  ๊ฐ€์ด๋“œ๋กœ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.

์ดํ•ด๋ฅผ ๋•๊ธฐ ์œ„ํ•ด ๋ธ”๋ฃจํ”„๋ฆฐํŠธ๋กœ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค๊ธฐ ์ด์ „์— C++๋กœ ์ฝ”๋“œ๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์˜ˆ์‹œ ํ•จ์ˆ˜

์ €ํฌ๋Š” ์˜ˆ์‹œ๋กœ 2๊ฐœ์˜ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. ์ด์•Œ์ด ์†Œ๋ชจ๋˜๋Š” ํ•จ์ˆ˜
  2. ์ด์•Œ์ด ์ถฉ์ „๋˜๋Š” ํ•จ์ˆ˜

์ด์•Œ ์†Œ๋ชจ ํ•จ์ˆ˜

C++๋กœ ์ž‘์„ฑํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๊ฒ ์ฃ .

void Fire() 
{
	bullet -= 1;
}

๊ฐ„๋‹จํ•˜์ฃ ?

๊ฒŒ์ž„์˜ ์„ธ๋ถ€์ ์ธ ์„ค๊ณ„์— ๋”ฐ๋ผ์„œ ์กฐ๊ฑด๋ฌธ์ด ๋” ๋งŽ์ด ์ถ”๊ฐ€๋  ๊ฒ๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ๊ฐ„๋‹จํ•œ ์‹ค์Šต์„ ์œ„ํ•ด ๋‹จ์ˆœํžˆ ์ด์•Œ์ด 1๋ฐœ ์ค„์–ด๋“œ๋Š” ๋กœ์ง๋งŒ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ BP_Player๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

์ด์•Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ €์žฅํ•  ๋ณ€์ˆ˜๊ฐ€ ์žˆ์–ด์•ผ๊ฒ ์ฃ ?
๋ณ€์ˆ˜๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด ์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.
Integer๋กœ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”.

์ด์ œ Fire๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•ด์ฃผ์„ธ์š”

๋ฏธ๋ฆฌ ์ž‘์„ฑํ•œ C++์ฝ”๋“œ๋ฅผ ๊ฐ€์ด๋“œ ์‚ผ์•„ ๋กœ์ง์„ ์ œ์ž‘ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ์ด์•Œ์—์„œ 1๊ฐ์†Œํ•œ ๊ฐ’์„ Set Bullet์„ ์‚ฌ์šฉํ•ด์„œ ์ €์žฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ด์•Œ ์ถฉ์ „ ํ•จ์ˆ˜

์šฐ์„  C++๋กœ ์ž‘์„ฑํ•ด๋ด…์‹œ๋‹ค.
bulletCount๋ผ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›์•„ ๊ทธ๋งŒํผ ์ด์•Œ์„ ์ถฉ์ „ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
์ด๋ฒˆ์—” ์กฐ๊ฑด์„ ํ•˜๋‚˜ ์ถ”๊ฐ€ํ•ด๋ณด์ฃ .
์ตœ๋Œ€๋กœ ๊ฐ€์ง€๊ณ  ์žˆ์„ ์ˆ˜ ์žˆ๋Š” ์ด์•Œ์˜ ๊ฐœ์ˆ˜๋ฅผ 120๊ฐœ๋กœ ์ œํ•œํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

void Refill(int extraBullet) 
{
	bullet += extraBullet;
    if (bullet > 120)
    {
    	bullet = 120;
    }
}

์—ญ์‹œ ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”.
์ด๋ฆ„์€ Refill์ด๋ผ๊ณ  ์ง€์–ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

์ถ”๊ฐ€ํ•  ์ด์•Œ์˜ ์ˆ˜๋ฅผ extraBullet์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ Input๊ฐ’์„ ๋„ฃ์–ด์ค์‹œ๋‹ค.
ํ•จ์ˆ˜๋ฅผ ์„ ํƒํ•˜๊ณ  ์šฐ์ธก Details์—์„œ ์„ค์ •ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์šฐ์„  ์ด์•Œ์„ ๋”ํ•˜๋Š” ๋กœ์ง๋ถ€ํ„ฐ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
ํ˜„์žฌ Bullet๊ณผ extraBullet์˜ ํ•ฉ ๊ฒฐ๊ณผ๊ฐ’์„ Setํ•ด์ฃผ๋ฉด ๋˜๊ฒ ์ฃ ?

์ด์ œ ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•ด๋ด…์‹œ๋‹ค.
๋”ํ•ด์ง„ Bullet์ด 120๊ฐœ๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด ๋‹ค์‹œ 120๊ฐœ๋กœ ์„ค์ •ํ•ด์ฃผ๋ฉด ๋์ž…๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•˜์ฃ ?

์ด๋ ‡๊ฒŒ ๋งŒ๋“  ํ•จ์ˆ˜๋Š” ์ดํ›„ ํฌ์ŠคํŒ…์—์„œ ์‚ฌ์šฉํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.
์‚ญ์ œํ•˜์ง€ ๋ง๊ณ  ๊ทธ๋Œ€๋กœ ๋‘์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.


๐Ÿ’ฅ Trace

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

์–ธ๋ฆฌ์–ผ ์—”์ง„5 ํŠธ๋ ˆ์ด์Šค ๊ณต์‹ ๋ฌธ์„œ

์ €๋Š” Line Trace๋ฅผ ์‚ฌ์šฉํ•œ ์˜ˆ์‹œ๋ฅผ ๋ณด์—ฌ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

์ขŒํด๋ฆญ์œผ๋กœ ์ด์„ ์˜๋Š” ๋ชจ์…˜์— Line Trace๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ์„ค์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ฐœ์‚ฌํ•ด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์„ ์ด Trace์˜ ์ง„ํ–‰๋ฐฉํ–ฅ์ž…๋‹ˆ๋‹ค.
์ขŒ์ธก์˜ Trace๋Š” ๋ฒฝ์— ๋งž์•„์„œ ๋„ค๋ชจ ๋นจ๊ฐ„ ๋ฐ•์Šค๋กœ ์ถฉ๋Œ์„ ๊ฐ์ง€ํ•œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•ด์„œ ์ด์•Œ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค๋ฉด ๊ทธ๊ฒƒ์ด ํžˆํŠธ์Šค์บ”๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.


โ˜„๏ธ Collision

์ƒํ˜ธ์ž‘์šฉ์— ์žˆ์–ด์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.

Collision ์ถฉ๋Œ์ž…๋‹ˆ๋‹ค.

๋‹จ์ˆœํžˆ ๋ฌผ๋ฆฌ์— ์˜ํ•œ ์ถฉ๋Œ์ด ์•„๋‹Œ ์ด๋ฒคํŠธ ๋ฐœ์ƒ์„ ์œ„ํ•ด์„œ ์ถฉ๋Œ์„ ๊ฐ์ง€ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒŒ์ž„์„ ์ง„ํ–‰ํ•˜๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ์บ๋ฆญํ„ฐ๊ฐ€ ์ˆ˜์ง‘ํ•  ์ˆ˜ ์žˆ๋Š” ์•„์ดํ…œ์€ ์บ๋ฆญํ„ฐ๊ฐ€ ๊ด€ํ†ต๋ฉ๋‹ˆ๋‹ค.

๊ด€ํ†ต๋˜๋Š”๋ฐ ์–ด๋–ป๊ฒŒ ์ถฉ๋Œ์„ ๊ฐ์ง€ํ• ๊นŒ์š”?
์ด๋Š” Collision์˜ ํ•„ํ„ฐ๋ง ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ์ œ์ž‘๋ฉ๋‹ˆ๋‹ค.

์–ธ๋ฆฌ์–ผ ์—”์ง„5 ์ฝœ๋ฆฌ์ „ ํ•„ํ„ฐ๋ง ๊ณต์‹ ๋ฌธ์„œ

"๋ฌด์—‡์„ ์–ด๋–ป๊ฒŒ ์ถฉ๋Œํ•  ๊ฒƒ์ธ๊ฐ€" ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Block
    ๊ด€ํ†ตํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ์ž…๋‹ˆ๋‹ค. Hit ์ด๋ฒคํŠธ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  • Overlap
    ๊ฒน์ณ์„œ ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Overlap ์ด๋ฒคํŠธ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  • Ignore
    ์ฝœ๋ฆฌ์ „์„ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค.

๋ ˆ๋ฒจ์— ํ๋ธŒ๋ฅผ ์„ค์น˜ํ•˜๊ณ  ํ•˜๋‚˜์”ฉ ๋ณ€๊ฒฝํ•ด๋ณด๋ฉด์„œ ํ™•์ธํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Block ์ƒํƒœ์ผ ๋•Œ๋Š” ์บ๋ฆญํ„ฐ๊ฐ€ ๊ฐ€๋กœ ๋ง‰ํ˜€ ์ด๋™ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

Overlap๊ณผ Ignore ์ƒํƒœ์ผ ๋•Œ๋Š” ๊ด€ํ†ต์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค๋ฉด ์ด๋ฒคํŠธ ์ƒ์„ฑ์˜ ์œ ๋ฌด์ด๋‹ˆ ์ž˜ ๊ธฐ์–ตํ•ด๋‘ก์‹œ๋‹ค.

์ดํ›„ ์ฑ„๋„ ์„ค์ •๊ณผ ๋”๋ถˆ์–ด ์ถฉ๋Œ์—ฌ๋ถ€์˜ ๊ฐœ๋… ์ดํ•ด๊ฐ€ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ํ•„์ˆ˜์ ์ธ ๊ธฐ๋Šฅ์ด๋‹ˆ ๊ผญ ์‹ค์Šตํ•˜๋ฉฐ ์ดํ•ดํ•ฉ์‹œ๋‹ค.


๋งˆ๋ฌด๋ฆฌ

Trace์™€ Collision์€ ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๊ธฐ์—” ์ค‘์š”ํ•œ ๊ฐœ๋…์ด๋ผ ์ถ”ํ›„ ๊ฐ๊ฐ์˜ ๋‚ด์šฉ์— ๋Œ€ํ•ด์„œ ์ƒ์„ธํ•˜๊ฒŒ ํฌ์ŠคํŒ…ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

1. ์ƒํ˜ธ์ž‘์šฉ์„ ์œ„ํ•œ ๊ธฐ์ดˆ
2. Line Trace๋ฅผ ์‚ฌ์šฉํ•œ ์ƒํ˜ธ์ž‘์šฉ
3. Overlap Event๋ฅผ ์‚ฌ์šฉํ•œ ์ƒํ˜ธ์ž‘์šฉ
4. ์‘์šฉ

profile
๊ฒŒ์ž„ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์–ด๋ณด์ž

0๊ฐœ์˜ ๋Œ“๊ธ€