λ§μ°μ€ λλκ·Έ κΈ°λ° μμ μμ± / κ³΅κ° μ΄λ μμ€ν
νλ‘ν νμ
λ° μ΄μμ©μΌλ‘ μμ±λ ν΅μ¬ λͺ¨λμ
λλ€.
DragManager.cs νλλ§ μ΄ν΄νλ©΄ μ 체 λ©μ»€λμ¦μ νμ
ν μ μμ΅λλ€.
- Unity 2021+
- Main Camera (ScreenToWorldPoint μ¬μ©)
Zoneνλ¦¬νΉ (SpriteRenderer + Collider2D)Draggableνκ·Έ (λλκ·Έ μν₯ λμ μ§μ )
/Scripts/DragManager.cs /Prefabs/Zone.prefab /Scenes/2dflat (ν μ€νΈ μ¬)
DragManager.csλ₯Ό λΉ GameObjectμ μΆκ°- Inspectorμμ
zonePrefabμ°κ²° - μ΄λ λμ μ€λΈμ νΈμ
Draggableνκ·Έ λΆμ¬ Scenes/2dflatμ€ννμ¬ ν μ€νΈ
- Left Mouse Button Down
- λλκ·Έ μμμ κΈ°λ‘
Zoneνλ¦¬νΉ μΈμ€ν΄μ€ μμ±
- λ§μ°μ€ μμΉλ₯Ό World μ’νλ‘ λ³ν
- μμμ λλΉ μμ ν¬κΈ° μ€μκ° μ λ°μ΄νΈ
Zoneν¬κΈ° λ° μμΉ μ κ·ν μ²λ¦¬
- Left Mouse Button Up
- Zone νμ (Collider λ²μ κ³ μ )
- Zone λ΄λΆ
Draggableκ²μ - μ΄ν μμ±λλ ZoneμΌλ‘ λμ Teleport
Zone AμμZone Bλ‘ μ΄λν λAλ΄λΆμ λͺ¨λDraggable
βB.centerλ‘ μ¦μ μ€λ μ΄λ- Player λν λμΌν κ·μΉ μ μ©
- λλκ·Έ μν₯ λμμ λͺ νν μ ννκΈ° μν¨
- μ μ€λΈμ νΈ μ΄λ μ 물리 λ° μΆ©λ λ¬Έμ λ°μ
- νκ·Έ κΈ°λ° μ€μ½ν λΆλ¦¬λ‘ μμ μ± ν보
ν μ€νΈμ© μ¬μλ λ€μμ΄ ν¬ν¨λμ΄ μμ΅λλ€.
- DragManager
- κΈ°λ³Έ νλ«ν¬λ¨Έ Player
- Draggable μν μ€λΈμ νΈ
- Zone ν리νΉ
- μ΄λμ Rigidbody2D κΈ°λ°μ΄ μλ Transform μ€λ λ°©μ
- Draggable μ€λΈμ νΈλ Collider2D νμ
- Zoneμ λλκ·Έ λ²‘ν° κΈ°λ°μΌλ‘ μλ ν¬κΈ° μ‘°μ
- λͺ¨λ μ λ ₯ μ²λ¦¬λ DragManager λ¨μΌ λͺ¨λλ‘ κ΄λ¦¬ (Global Input Layer)
LMB Down β record startPos β instantiate ZonePrefab
LMB Hold β update Zone scale/position
LMB Up β lock Zone β find Draggable inside β on next Zone β teleport to center
μ΄ μμ€ν
μ βμμ 그리기 β κ³΅κ° μ΄λβμ΄λΌλ μλ‘μ΄ μ‘°μ κ²½νμ μ§μ€ν νλ‘ν νμ
μ
λλ€.
λ¨μΌ Manager κΈ°λ° κ΅¬μ‘°λ‘ μ΄μμ±μ΄ λμΌλ©°, μ΅μ 리μμ€λ‘ λμ μνΈμμ© ν¨κ³Όλ₯Ό μ»μ μ μλλ‘ μ€κ³λμμ΅λλ€.