์๋ ์ํ ๋ฐฉํฅ์์ ๋ฟ์ผ๋ฉด ๊ด์ฐฎ์๋ฐ, ์๋๋ก๋ง ๊ฐ๋ฉด ๋ฑ ๋ฌ๋ผ๋ถ์ด์ ๋ฒฝ ๊ตฌ์ ๊ฐ์ ๋ฌผ์ฒด๋ก ๋ผ์ด๋ด์ง ์์ผ๋ฉด ๋จ์ด์ง์ง ์์ต๋๋ค.
์ด๊ฒ ์์์๋ ๋ถ์์ผ๋ฉด ๋ฌธ์ ์ ์ ํ์ ํ ์ ์์ ๊ฑฐ ๊ฐ๊ธด ํ๋ฐ ์๋์์๋ง ๋ถ์ผ๋๊น ๋์ ํ ๊ฐ๋ ์ ์กํ๋๋ค..
extends CharacterBody2D
var run_speed = 25
var player = null
func _physics_process(delta):
velocity = Vector2.ZERO
if player:
velocity = global_position.direction_to(player.global_position).normalized()\
* run_speed
$AnimatedSprite2D.play("Walk")
if player.global_position > global_
$AnimatedSprite2D.flip_h = false
else:
$AnimatedSprite2D.flip_h = true
else:
$AnimatedSprite2D.play("Idle")
move_and_slide()
func _on_detection_area_body_entered(body):
player = body
func _on_detection_area_body_exited(body):
player = null
func enemy():
pass
==================================================================================================
(ํ๋ ์ด์ด)
(์ฌ๋ผ์)
์ฝ๋ฆฌ์ ผ ์ผ์ ํ๋ฒ ํ์ธํด๋ณด์๊ฒ ์ด์? ๋๋ฒ๊ทธ > ์ฝ๋ฆฌ์ ผ ๋ชจ์ ํ์ธ (Visible Collision Shape) ํ๋ฉด ์ฝ๋ฆฌ์ ์์น ๋์์
์ฝ๋ฆฌ์ ผ ๋ฌธ์ ๊ฐ ๋ง์๋ค์. ๊ฐ์ฌํฉ๋๋ค. ๋๋ถ์ ํด๊ฒฐ ํ์ต๋๋ค. ๊ทผ๋ฐ ๋ง์คํฌ๊ฐ ์๋ก ์ง์ ๋ ์ํ์์ ํด๋น ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ์ด์ ๋ ์์ง ์ดํดํ์ง ๋ชปํ์ต๋๋ค ใ
์ฌ๋ผ์ ์ ์ฐฉ ๊ตฌ์ ํ๋ ์ด ใทใท
ํ๊ณ direction_to()๋ normalized ๋ ์๊ธฐ ๋๋ฌธ์ normalized()๋ฐ๋ก ๋ ์์ฐ์ ๋ ๋์
if player.global_position > global_ ๋ global_position.x ์๊ฐํ์ ๊ฑฐ ๊ฐ์๋ฐ ์๋ชป์ฐ์ ๊ฑฐ ๊ฐ๋ค์
์ด๊ฑฐ๋ณด๋๊น ์ฌ๋ผ์ ์ค๋ํ ์๊ฐ๋๋ค
์ค๋ ฅ์ด์์๋?
๋ชน์ ์ฝ๋ฆฌ์ ๋ง์คํฌ๊ฐ ์ฌ๋ฌ๊ฐ๋ก ๋ณด์ด๋๋ฐ ๊ทธ๊ฑฐ ๋๋ฌธ์ผ์ง๋์?
ํฐ ๊ฑด ํ๋ ์ด์ด ๊ฐ์ง ์ฉ ์ฝ๋ฆฌ์ ผ์ด๊ณ ์์ ๊ฑด ๊ฐ๊ฐ ๋ฌผ๋ฆฌ, ํํธ ๋ฐ์ค ์ฝ๋ฆฌ์ ผ์ ๋๋ค. ์ ๋ ๋๊ฐ์ด ์๊ฐํด์ ๋ฌผ๋ฆฌ๋ฅผ ์ ์ธํ๊ณ ์ ๋ถ ๊บผ๋ดค๋๋ฐ ๋ฐ๋์ง ์๋๊ตฐ์