ํค๋ณด๋๋ ๋ง์ฐ์ค๋ Input.is_action_just_pressed() ํจ์๋ฅผ ํตํด์
ํด๋ฆญ๋ ์ฒซ ์๊ฐ์ ํฌ์ฐฉํ ์ ์์์.
๊ทผ๋ฐ, ๋ชจ๋ฐ์ผ ํฐ์น๋ฅผ ๊ฐ์งํ๊ธฐ ์ํด์ InputEvent ๊ฐ์ฒด๋ฅผ ์ด์ฉํ๋ ค๋๋ฐ, ์ฌ๊ธด just_pressed๊ฐ ์๋ค..
์บก์ฒ๋ฅผ ๋ณด๋ฉด ์๊ฒ ์ง๋ง ๋นจ๊ฐ ๋๊ทธ๋ผ๋ฏธ ์น ๋์ ๋๋๊ทธํด์ ์์ง์ด๋ฉด, ๋ค๋ฅธ ๋๋ค๋ ๋๋๊ทธ์ ๋ฐ์ํด์ ํฉ์ณ์ ธ ๋ฒ๋ฆผ;
๋ง์ฝ just_pressed ๋ฉ์๋๊ฐ ์์ผ๋ฉด ์์ฃผ ์ฝ๊ฒ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋๋ฐ ๋ง์ด์ง.
๋ฌผ๋ก ๋์์ฑ ์ผ๋ก ํ์ฌ ๋๋๊ทธํ๋ ์ค์ธ์ง๋ฅผ ์ฒดํฌํ๋ ์์ผ๋ก (์๋ฅผ ๋ค์ด ์ด๋ค ๋ง๋ฒ์ฌ ๊ฐ์ฒด๊ฐ ๋๋๊ทธ ๋ ๋ ๊ทธ ์ ๋ณด๋ฅผ ์ด๋๊ฐ ์ ์ฅํด๋๋ ๊ฑฐ์ง)
ํด๊ฒฐํ ์ ์๊ธด ํ๋ฐ, touch input์ ๋ํ just_pressed๊ฐ ์ ๋ง ์๋ ๊ฑด์ง ๊ถ๊ธํจ. ๋ง์ฝ ์๋ค๊ณ ํ๋ฉด ๊ทธ๋ฅ ์์ฒ๋ผ ์ฃผ๋จน๊ตฌ๊ตฌ์์ผ๋ก ํด๊ฒฐํ ์๋ฐ์ ์๋ ๊ฑฐ์?
์ถ๊ฐ)
func _on_area_2d_input_event(viewport, event, shape_idx):
ย ย if event is InputEventScreenTouch:
# ๊ทผ๋ฐ ์ฌ๊ธด just_pressed ํจ์๊ฐ ์์..
if event.is_pressed():
before = position
modulate.a = 0.3
else:
position = Vector2(snapped(position.x - 32, 64) + 32, snapped(position.y -32, 64) + 32)
modulate.a = 1
if not can_drop():
position = before
if event is InputEventScreenDrag:
position = get_global_mouse_position()
์ ์ฝ๋๋ฅผ ์์ธํ ์ค๋ช ํ์๋ฉด, ๋๋๊ทธ ํ ๋๋ ์ฝ๊ฐ ๋ถํฌ๋ช ํด์ง๊ณ , snap to grid ๋๋์ผ๋ก ์ํ๋ ์์น์ ๊ฐ์ ธ๋ค ๋๋ ๊ฑด๋ฐ, ๋ง์ฝ ํด๋น ์์น์ ๋ค๋ฅธ ๋์ด ์์ผ๋ฉด, ์๋ ์์น๋ก ๋์๊ฐ๊ฒ ์ง ๋์. _process(delta) ํจ์๋ ๋ด๊ฐ ์ํ๋ ๋๋ก ์ ์๋ํจ. ๊ทธ๋์ ์ด์ ๋ชจ๋ฐ์ผ ํฐ์น๋ก๋ ์ ๋๋ ํด๋ณด๋ ค๋ ๊ฑด๋ฐ, ์ฌ๊ธฐ์ ๋งํ ๊ฑฐ์.
์ง๋ฌธ์ด ํ๋ ๋ ์๊น. ใ ใ ์๊ฐํด๋ณด๋ ์ ์ด์ ๋ง์ฐ์ค ๊ด๋ จ ํจ์๋ ํฐ์น ์คํฌ๋ฆฐ์์ ์ ์๋ํ๋, ๊ทธ๋ฅ ๋ง์ฐ์ค ๊ด๋ จ ํจ์๋ก ์งฐ์ด๋ ๋๋ ๊ฑด๊ฐ ์ถ์๋ฐ, ๊ทผ๋ฐ ๊ทธ๋ฌ๋ฉด Touch ๊ด๋ จ ์ด๋ฒคํธ ํด๋์ค์ ์กด์ฌ ์ด์ ๊ฐ ํด์๋๋ ๊ฑด ์๋๊ฐ?
๋์ ๋ง์ฐ์ค๋ ๋ฉํฐํฐ์น์ ๋์์ด ์๋์์
๋จ์ผ ํฐ์น๋ง ํ์ํ๋ฉด ๊ทธ๋ ๊ฒํด๋๋จ
์๋ง InputEventScreentouch์์ฒด๊ฐ ๊ทธ ์ฉ๋์ผ๊ฑฐ๊ณ ๋๋๊ทธํ ๋ ์ฐ๋๊ฑด InputEventScreenDrag๊ฐ ๋ฐ๋ก ์์ฌ๊ฑธ
์ ๊ทธ inputEvent Screen Drag๋ ์ฌ์ฉ์ค์. func _on_area_2d_input_event(viewport, event, shape_idx): if event is InputEventScreenTouch: # ๊ทผ๋ฐ ์ฌ๊ธด just_pressed ํจ์๊ฐ ์์.. if event.is_pressed(): before = position modulate.a = 0.3 else: position = Vector2(snapped(position.x - 32, 64) + 32, snapped(position.y -32, 64) + 32) modulate.a = 1 if not can_drop(): position = before if event i
์๋ ์ ์๋ง ๋ณธ๋ฌธ์ ๋ค์ ์ฒจ๋ถํ ๊ฒ
๋ณต๋ถํ๋๊น ๋ง์ง๋ง if๊ฐ ๋ค์ฌ์ฐ๊ธฐ๊ฐ ์ด์ํ๊ฒ ๋๋ค.
๊ทผ๋ฐ ๋์ด ๋งํด์ค ๋๋ก PC/adroid ๊ฑฐ์ ๊ทธ๋๋ก ๊ฐ๊ฐ ๋ฐฐํฌํ๋ ๊ฒ ๋ชฉํ์ธ๋ฐ ๊ทธ๋ฌ๋ฉด ๊ทธ๋ฅ ๋ง์ฐ์ค ๊ด๋ จ ํจ์๋ก๋ง ์ง๋ ๊ฒ ๋ง๋?
์ ๋งํด์ค ๋๋ก ๋ผ๋ ๊ฑด ๋จ์ผ ํฐ์น์ ๋ํ ๋ง์
์ ใ ใ ํผ์ ํด๊ฒฐ์ฑ ์ ์ฐพ์. ํด๋ฆญํด์ ๋ค์ด๊ฐ ๊ฒ ์๋๋ฉด ์ ์ด์ is_pressed๊ฐ ์๋ ์ ํ๋ค.. ์ฌ๊ธฐ๋ค๊ฐ bool ๋ณ์ ํ๋ ๋ฃ๊ณ ๋ง์ง๋ง drag event if๋ฌธ์๋ค๊ฐ if pressed ์ธ์ง ํ์ธ ํ๋ฉด ๋ ๋ฏ.. ๋์์ค์ ๋กํ
ใ ใ InputEventScreenTouch์์ฒด๊ฐ ๊ทธ ์ฉ๋๋ผ๋๊ฒ ๊ทธ ๋ง์. ์ ํํ๋, is_pressed๊ฐ ์๋์ ์ํ๋๊ฒ ์๋๋ผ ๊ฑ InputEventScreenTouch๊ฐ์ฒด ์์ฒด๊ฐ ์๋ค์ด์ค๋๊ฑฐ์. ์๋ ํฐ์นํ ๋/์๊ฐ๋ฝ ๋๋๋ง ๋ค์ด์ด
๋ง์ฐ์ค ํจ์๋ก๋ง ์ง๋๊ฒ ๋ง๋์ง ํ๋ฆฐ์ง๋ ๋ณธ์ธ์์ด ๋จ์ธํ ์ ์๋๊ฑด ์๋์ง๋ง ๋ณธ์ธ์์ด๋ฉด ๋ง์ฐ์ค๋ก๋ง ํ ๊ฑฐ๊ฐ์ ๊ท์ฐฎ์ผ๋๊น
ใ ใ ใ ใ . ์ง์ง ๋์ ๋ง์ด ๋ฐ๋ ๊ฒ ๊ฐ๋ค. ๋กํ~