Post

๐Ÿ“œ Health Bar System ์ฝ”๋“œ ๋ฌธ์„œ

์ธ๋”” ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ GDScript๋กœ ์ž‘์„ฑํ•œ Health Bar system ์„ ๋ฌธ์„œํ™” ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๐Ÿ“œ Health Bar System ์ฝ”๋“œ ๋ฌธ์„œ

๊ฐœ์š”

res://common_hpbar/
์ด ์ฝ”๋“œ๋Š” Godot ์—”์ง„์—์„œ ProgressBar๋ฅผ ํ™œ์šฉํ•œ ์ฒด๋ ฅ ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. Health Bar๋Š” ํ”Œ๋ ˆ์ด์–ด์˜ ํ˜„์žฌ ์ฒด๋ ฅ์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ, Damage Bar๋Š” ๋ฐ๋ฏธ์ง€๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ์ง€์—ฐ๋œ ํšจ๊ณผ๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. Timer๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Damage Bar ์—…๋ฐ์ดํŠธ์— ์ง€์—ฐ์„ ์ถ”๊ฐ€ํ•ด, ์ฒด๋ ฅ ๊ฐ์†Œ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค.


์†์„ฑ

  • timer (Timer ๋…ธ๋“œ): ๋ฐ๋ฏธ์ง€ ํšจ๊ณผ์˜ ์‹œ๊ฐ์  ์ง€์—ฐ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋ฐ๋ฏธ์ง€๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํƒ€์ด๋จธ๊ฐ€ ์‹œ์ž‘๋˜์–ด ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚œ ํ›„์— Damage Bar๊ฐ€ ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค.

  • damage_bar (ProgressBar ๋…ธ๋“œ): Health Bar์™€๋Š” ๋ณ„๋„๋กœ, ๋ฐ๋ฏธ์ง€๋ฅผ ๋ฐ˜์˜ํ•˜๊ธฐ ์œ„ํ•ด ์ง€์—ฐ๋œ ์ƒํƒœ๋กœ ์ฒด๋ ฅ ๊ฐ์†Œ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œ์‹œํ•˜๋Š” ProgressBar์ž…๋‹ˆ๋‹ค.

  • health (int): ํ”Œ๋ ˆ์ด์–ด์˜ ํ˜„์žฌ ์ฒด๋ ฅ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค. ์ด ๋ณ€์ˆ˜๋Š” _set_health ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๊ฐ’์ด ์„ค์ •๋ฉ๋‹ˆ๋‹ค.



ํ•จ์ˆ˜

func init_health(_health: int) -> void

  • ์„ค๋ช…: ํ”Œ๋ ˆ์ด์–ด์˜ ์ดˆ๊ธฐ ์ฒด๋ ฅ ๊ฐ’์„ ์„ค์ •ํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • ๋งค๊ฐœ๋ณ€์ˆ˜:
    • _health: ์ดˆ๊ธฐ ์ฒด๋ ฅ ๊ฐ’.
  • ๋™์ž‘:
    • health ๋ณ€์ˆ˜์— _health ๊ฐ’์„ ํ• ๋‹นํ•˜์—ฌ ํ”Œ๋ ˆ์ด์–ด์˜ ์ฒด๋ ฅ์„ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
    • max_value์™€ value ์†์„ฑ์„ ์„ค์ •ํ•˜์—ฌ Health Bar์™€ Damage Bar๊ฐ€ ์ดˆ๊ธฐ ์ฒด๋ ฅ์„ ํ‘œ์‹œํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.


func _set_health(new_health: int) -> void

  • ์„ค๋ช…: health ๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•˜๊ณ , ๋ฐ๋ฏธ์ง€๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ ํƒ€์ด๋จธ๋ฅผ ์ž‘๋™์‹œํ‚ค๋Š” setter ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • ๋งค๊ฐœ๋ณ€์ˆ˜:
    • new_health: ์—…๋ฐ์ดํŠธํ•  ์ฒด๋ ฅ ๊ฐ’.
  • ๋™์ž‘:
    • new_health ๊ฐ’์„ health์— ์„ค์ •ํ•˜๊ณ , value ์†์„ฑ์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
    • health๊ฐ€ 0 ์ดํ•˜๋กœ ๋–จ์–ด์ง€๋ฉด ๋…ธ๋“œ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
    • health๊ฐ€ ๊ฐ์†Œํ•œ ๊ฒฝ์šฐ(prev_health๋ณด๋‹ค ๋‚ฎ์•„์ง„ ๊ฒฝ์šฐ), timer๊ฐ€ ์ž‘๋™ํ•˜์—ฌ Damage Bar์— ์‹œ๊ฐ์  ์ง€์—ฐ ํšจ๊ณผ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    • health๊ฐ€ ๊ฐ์†Œํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” Damage Bar์˜ value๋ฅผ ์ฆ‰์‹œ health์™€ ๋™์ผํ•˜๊ฒŒ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.


func _on_timer_timeout() -> void

  • ์„ค๋ช…: ํƒ€์ด๋จธ ์‹œ๊ฐ„์ด ์ข…๋ฃŒ๋˜์—ˆ์„ ๋•Œ ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. Damage Bar๊ฐ€ Health Bar์˜ ์ฒด๋ ฅ ๊ฐ’์„ ๋”ฐ๋ผ๊ฐ€๋„๋ก ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
  • ๋™์ž‘:
    • damage_bar.value๋ฅผ health์™€ ๋™์ผํ•˜๊ฒŒ ์„ค์ •ํ•˜์—ฌ ๋‘ ๋ง‰๋Œ€๊ฐ€ ์ผ์น˜ํ•˜๋„๋ก ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์ฝ”๋“œ ํ๋ฆ„

  1. init_health ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜์–ด ์ดˆ๊ธฐ ์ฒด๋ ฅ ๊ฐ’์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  2. ์ฒด๋ ฅ ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค _set_health ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
    • ์ฒด๋ ฅ์ด ๊ฐ์†Œํ–ˆ์„ ๊ฒฝ์šฐ, ํƒ€์ด๋จธ๊ฐ€ ์‹œ์ž‘๋˜๊ณ  ์ง€์—ฐ ํ›„์— _on_timer_timeout ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
  3. _on_timer_timeout ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๋ฉด Damage Bar๊ฐ€ Health Bar์™€ ๋™์ผํ•œ ๊ฐ’์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ  ์œ ํŠœ๋ธŒ ์ฃผ์†Œ

๐Ÿ“ผ https://youtu.be/f90ieBOoIYQ?si=nyOZOAt1t7tkZuJk


ํ›„์›

๐Ÿป ๋งฅ์ฃผ ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ›„์› ๋งํฌ

๋” ๋งŽ์€ ๊ฐœ๋ฐœ ํŒ๊ณผ ๊ฒฝํ—˜๋‹ด์ด ํ•„์š”ํ•˜์‹  ๋ถ„๋“ค์€ ์ œ ์†Œ์…œ ์ฑ„๋„๋„ ํ™•์ธํ•ด ์ฃผ์„ธ์š”!

๐ŸŒฒLink tree

ํ˜น์‹œ๋ผ๋„ ์ €์— ๋Œ€ํ•ด์„œ ๋” ์•Œ๊ณ  ์‹ถ์œผ์‹œ๋‹ค๋ฉด! ๐Ÿ•ต๏ธ๐Ÿป About Redping

This post is licensed under CC BY 4.0 by the author.