λ¬΄ν„±λŒ€κ³  νŒ€μ—μ„œ 아무 생각없이 2D ν”Œλž«ν¬λ¨Έ λ©”νŠΈλ‘œλ² λ‹ˆμ•„ ν˜•μ‹μ˜ κ²Œμž„μ„ λ§Œλ“€μž! ν•΄μ„œ 개발 μ§„ν–‰ν•˜λ‹€κ°€ λ‹€μ‹œλŠ” 이 μž₯λ₯΄λ‘œ μ‹œλ„ μ•ˆν•œλ‹€κ³  ν›„νšŒν•˜λ©΄μ„œ κ°œλ°œμ€‘μΈ κ°œλ°œμ‘°λ¬΄μ‚¬μž„


μ΅œκ·Όμ— 개발 μ§„ν–‰ 도쀑 κ²½μ‚¬λ‘œ κ΄€λ ¨ μ΄μŠˆκ°€ λ°œμƒν•œ 것과, κ·Έ 해결과정에 λŒ€ν•΄μ„œ μ λŠ” 게 쒋을 κ±° κ°™μ•„μ„œ 본인 개발 κ³Όμ •κ³Ό 같이 적어봄



2D ν”Œλž«ν¬λ¨Έ κ²Œμž„μ—μ„œ μ›€μ§μž„μ„ μ£ΌλŠ” 방법은 크게 Translate와 Rigidbody의 Velocityλ₯Ό μ΄μš©ν•˜μ—¬ μ›€μ§μž„μ„ μ£ΌλŠ” κ²½μš°κ°€ 많음


그리고 κ·Έ μ€‘μ—μ„œλ„ λ¦¬μ§€λ“œλ°”λ””λ₯Ό μ΄μš©ν•˜λŠ”μͺ½μ΄ λ‹€λ₯Έ μœ λ‹ˆν‹° λ‚΄ λ‚΄μž₯ κΈ°λŠ₯λ“€κ³Όμ˜ μƒν˜Έμž‘μš©μ„ μœ„ν•΄μ„œλΌλ„ 이점이 λ§ŽκΈ°μ— λ¦¬μ§€λ“œλ°”λ””λ₯Ό μ΄μš©ν•˜μ—¬ μž‘μ—…μ„ μ§„ν–‰ν•˜κ²Œ 됨


이 경우 λ‹¨μˆœν•œ ν—ˆκ³΅ 점프, μˆ˜ν‰λ©΄μ—μ„œμ˜ 이동에 λŒ€ν•΄μ„œλŠ” 별닀λ₯Έ 문제 μ΄μŠˆκ°€ μ—†μ—ˆκ³ , μ‹€μ œλ‘œ 본인도 λ§΅ λ””μžμΈ μ‹œμž‘μ΄ 되기 μ „κΉŒμ§€λŠ” μ•Όν˜Έ 물리뢀 끝! μ΄λŸ¬λ©΄μ„œ λ°©μΉ˜ν•˜κ³  있던 μƒνƒœμ˜€μŒ


근데 κ²½μ‚¬λ‘œκ°€ ν¬ν•¨λ˜λ©΄μ„œλΆ€ν„° 머릿속이 λΉ κ²Œμ§€κΈ° μ‹œμž‘ν–ˆμŒ


κ²½μ‚¬λ©΄μ—μ„œ κ²ͺ게 λ˜λŠ” λ¬Έμ œλŠ” 총 2κ°€μ§€κ°€ μžˆλ‹€κ³  λ΄„



1. 일정 μˆ˜μ€€ μ΄μƒμ˜ 마찰 여뢀에 λ”°λ₯Έ κ²½μ‚¬λ‘œ 이동 κ΄€λ ¨ 이슈

2. κ²½μ‚¬λ‘œ κ·Έ 자체λ₯Ό 였λ₯΄λ©΄μ„œ XμΆ• 속λ ₯ 쀑 일뢀가 κ²½μ‚¬λ‘œμ˜ 경사면에 λΆ€λ”«νžˆλ©΄μ„œ μƒκΈ°λŠ” YμΆ• 속λ ₯


1λ²ˆμ€ 사싀 물리 λ©”ν„°λ¦¬μ–Όλ§Œ 잘 μ‘°μ ˆν•΄μ€˜λ„ μ–΄λŠμ •λ„ μ‡ΌλΆ€λŠ” λ³Ό 수 μžˆλŠ” λ¬Έμ œμ˜€μœΌλ‚˜, κ²°κ΅­ κ²½μ‚¬λ‘œμ˜ 각도 νŒŒμ•…μ΄ λ˜μ§€ μ•ŠμœΌλ©΄ μ˜λ―Έκ°€ μ—†μ—ˆμŒ

νŠΉνžˆλ‚˜ ν•¨λΆ€λ‘œ 마찰λ ₯을 λ†’νžˆλ©΄ 점프 쀑 벽에 λΆ€λΉ„λŠ” 일도 κ°€λŠ₯ν•΄μ§€κ³ , κ·Έλ ‡λ‹€κ³  λ§ˆμ°°μ„ μ—†μ• λ©΄ μ™„λ§Œν•œ κ²½μ‚¬μ—μ„œ κ΅΄λŸ¬λ‚΄λ¦¬λŠ” 일도 생기고


2λ²ˆμ€ μ‹€μ œλ‘œ 더 μ‹¬κ°ν–‡μŒ



24b0d121e09c28a8699fe8b115ef046a7b6be2



λ‹Ήμ—°ν•˜λ‹€λ©΄ λ‹Ήμ—°ν•˜κ² μ§€λ§Œ, μ €λŸ° ν„±μ—μ„œ 물체가 λΆ• ν•˜κ³  νŠ€μ–΄μ˜€λ₯΄λŠ” ν˜„μƒλ„ λ°œμƒν•¨


λ¬Όλ‘  μ €κ²Œ μ˜λ„λœ 사항이면 상관이 μ—†κ² μ§€λ§Œ, κ²Œμž„ λ‚΄ 캐릭터가 μ†Œλ‹‰κ°™μ€ μΌ€μ΄μŠ€κ°€ μ•„λ‹Œ 이상 μ €λ ‡κ²Œ νŠ€μ–΄μ˜€λ₯΄λŠ” ν˜„μƒ μžμ²΄λŠ” κ·Έλ‹€μ§€ μ›ν•˜μ§€ μ•Šμ•˜μŒ


이 λ¬Έμ œλ•Œλ¬Έμ— 2일정도 머리 μ‹Έλ§€λ©΄μ„œ μ–΄λ–»κ²Œ ν•˜μ§€ 고민을 ν–ˆκ³ , 걍 μ§€ν˜•μ„ μ „λΆ€ 수직으둜 ν•˜λ©΄ μ•ˆλ˜λ‚˜γ…‹γ…‹ν•˜λŠ” μ˜κ²¬κΉŒμ§€ μ œμ‹œν•  μ •λ„λ‘œ μ’€ ν”Όνν•΄μ§€λŠ” κΈ°λΆ„μ΄μ˜€μŒ


κ·ΈλŸ¬λ‹€κ°€ ν˜Ήμ‹œλ‚˜ 싢은 λ§ˆμŒμ— μ˜μ–΄λ‘œλ„ 검색을 ν•˜λ©΄μ„œ λͺΈμ„ λΉ„ν‹€μ—ˆλŠ”λ°, κ²°κ΅­ 유튜브 μ˜μƒ ν•˜λ‚˜λ₯Ό 찾게 λ˜λ©΄μ„œ 해결을 보게 λ˜μ—ˆμŒ




μ •ν™•ν•˜κ²Œ λ‚΄κ°€ 찾던 사둀에 λΆ€ν•©λ˜λŠ” μ˜μƒμ΄μ˜€κ³ , λ‚˜λŠ” λ°”λ‘œ 유튜브 μ„€λͺ…λž€μ— μžˆλŠ” κΉƒν—™ ν”„λ‘œμ νŠΈλ₯Ό λ‚΄λ €λ°›κ³  이식 μž‘μ—…μ„ μ‹œμž‘ν–ˆμŒ


이 μ‚¬λžŒμ΄ μ œμ‹œν•œ λ°©μ•ˆμ€, 캐릭터 λ‚΄ μ’Œν‘œλ₯Ό κΈ°μ€€μœΌλ‘œ 일정 거리 이상 μˆ˜ν‰/수직 λ°©ν–₯으둜 RaycastHit 탐색을 μ‹€μ‹œν•΄μ„œ λ…Έλ©€ 벑터λ₯Ό κ΅¬ν•˜κ³ , κ·Έ 값을 ν† λŒ€λ‘œ κ²½μ‚¬μ˜ 여뢀와 경사 각도λ₯Ό κ΅¬ν•˜λŠ” λ°©λ²•μ΄μ˜€μŒ


κ·ΈλŸ¬κ³ μ„œ κ·Έ κ²½μ‚¬λ‘œμ˜ 값을 ν† λŒ€λ‘œ λ§ˆμ°°κ³„μˆ˜κ°€ μ‘΄λ‚˜ 높은 물리 메터리얼과, λ§ˆμ°°κ³„μˆ˜κ°€ 0인 물리 메터리얼을 λ‘˜ λ‹€ 인자둜 λ°›κ³  상황에 따라 λ¦¬μ§€λ“œ λ°”λ””κ°€ μ“Έ 물리 메터리얼을 κ²°μ •ν•˜λŠ” λ°©λ²•μ΄μ˜€μŒ



24b0d121e09c28a8699fe8b115ef0468e1a2eebb


μ˜μƒ μ„€λͺ…에 있던 슀크립트λ₯Ό ν† λŒ€λ‘œ κ°œμ‘°ν•œ μ΄ν›„μ˜ μ›€μ§μž„ λΆ€λΆ„ 본인 ν•¨μˆ˜


λ¬Όλ‘  μ € μ˜μƒμ˜ κ²½μš°μ—λ„ μ™„λ²½ν•˜κ²Œ μž‘λ™λ˜λŠ” ν”„λ‘œμ νŠΈλŠ” μ•„λ‹ˆμ˜€μŒ, λ‹Ήμž₯에 μ € μ˜ˆμ‹œ ν”„λ‘œμ νŠΈμ—μ„œλ„ ν”Œλ ˆμ΄μ–΄κ°€ 수직 벽에 λΆ€λ”«νžˆλŠ” μˆœκ°„ λ‚‘κΈ°λŠ” ν˜„μƒμ΄ λ°œμƒν–ˆμ—ˆκ³ 


κ·Έλž˜μ„œ μ € μ½”λ“œ 자체λ₯Ό μ’€ λœ―μ–΄κ³ μ³μ„œ μ μš©μ„ ν•˜κ²Œ λ˜μ—ˆμ–΄


κ·Έ κ²°κ³Ό, μ–΄λŠμ •λ„μ˜ κ²½μ‚¬λ‘œμ—μ„œ λŒ€ν•΄μ„œλŠ” 기쑴에 있던 μ΄μŠˆκ°€ 해결이 λ˜μ—ˆμŒ!


λ¬Όλ‘  아직도 λ„ˆλ¬΄ κ°€νŒŒλ₯΄κ±°λ‚˜ ν•œ κ²½μš°μ—λŠ” 탐지 λ²”μœ„κ°€ λΆ€μ‘±ν•˜λ©΄ κ²½μ‚¬λ‘œ 인식을 λͺ»ν•˜λŠ” 버그가 μ‘΄μž¬ν•˜κ³ , 이걸 νƒμ§€λ²”μœ„λ₯Ό λŠ˜λ¦¬λŠ” μˆœκ°„ ν—ˆμš©λ²”μœ„ μ΄μƒμ˜ κ²½μ‚¬λ‘œμ™€ κ·Έλƒ₯ 평면 사이에 μžˆμ„ λ•Œ ν”Œλ ˆμ΄μ–΄κ°€ 잘 움직이지 μ•ŠλŠ” ν˜„μƒλ„ μ‘΄μž¬ν•΄μ„œ μ™„λ²½ν•œ λ‹΅μ•ˆμ΄ λ˜μ§€λŠ” λͺ»ν–ˆμŒ


κ·Έλž˜λ„ 유튜브 μ°Ύμ•„μ„œ ν™•μΈν•˜κ²Œ λ˜λ‹ˆκΉ κ³ λ―Όν–‡λ˜ 문제λ₯Ό 90% 정도 ν•΄κ²°λ˜μ–΄μ„œ μ’€ 기뻀음


아무μͺΌλ‘ μœ λ‹ˆν‹°κ°€ λ‚˜κ°™μ€ κ°œλ°œμ‘°λ¬΄μ‚¬ν•œν…Œ 쒋은 이유λ₯Ό λ‹€μ‹œ ν•œλ²ˆ 체감할 수 μžˆλŠ” 쒋은 κΈ°νšŒμ˜€μŒ


λ¨Έμ“±



//PS. ν˜Ήμ‹œ μ € μ˜μƒμ—μ„œ μ†Œκ°œν•œ 방법보닀 κ²½μ‚¬λ‘œ 물리 처리λ₯Ό ν•˜κΈ° 더 쒋은 방법 같은 게 있으면 μ†Œκ°œν•΄μ£Όλ©΄ 맀우 κ³ λ§ˆμšΈκ±°κ°™μ•„


3쀄 μš”μ•½

1. 2D ν”Œλž«ν¬λ¨Έ κ²Œμž„μ—μ„œ κ²½μ‚¬λ‘œ μ²˜λ¦¬λŠ” 생각보닀 ꡉμž₯히 κΉŒλ‹€λ‘œμ› λ‹€

2. μœ λ‹ˆν‹° ν™˜κ²½μ„ μ“°λŠ” 이상 검색을 λͺΈμ— μ΅νžˆλŠ” μͺ½μ΄ μ •μ‹ μ μœΌλ‘œλ„, μœ‘μ²΄μ μœΌλ‘œλ„ ꡉμž₯히 μ΄λ‘œμ›€

3. μ ˆλŒ€λ‘œ "2D ν”Œλž«ν¬λ¨Έ λ©”νŠΈλ‘œλ°”λ‹ˆμ•„ κ²½μ‚¬λ‘œ μžˆλŠ” κ²Œμž„" κ°œλ°œν•˜μ§€λ§ˆ