https://learn.unity.com/project/rubiyi-moheom-2d-cogeubjayong?uv=2020.3
์ฌ๊ธฐ์๋ ํํ ๋ฆฌ์ผ ์๋ ์ ํ๋๊ฑฐ ์๊ฐ๋์ ๋ค์ ๋ค์ด๊ฐ๋ณด๋ ์ข ์์ ๋๊ฑฐ๊ฐ๋๋ผ๊ณ ๊ทธ๋์ ๋ค์ํด๋ณด๋๋ฐ
์บ๋ฆญํฐ ์์ง์ด๋๊ฑฐ ๊ตฌํ์ ์ด๋ ๊ฒ ํด๋์์
public class RubyController : MonoBehaviour
{
Rigidbody2D rigidbody2d;
// Start is called before the first frame update
void Start()
{
rigidbody2d = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update()
{
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");
Vector2 position = rigidbody2d.position;
position.x = position.x + 3.0f * horizontal * Time.deltaTime;
position.y = position.y + 3.0f * vertical * Time.deltaTime;
rigidbody2d.MovePosition(position);
}
}
๊ทผ๋ฐ ์ ๊ฑธ ์ ๋ํฐ๋ก ์ฎ๊ฒจ์ ์คํํด๋ณด๋ ์บ๋ฆญํฐ๊ฐ ์์ง์ด๋๊ฒ ์์ ์์๊ณผ๋ ๋ค๋ฅด๊ฒ ๋น์ ์์ ์ผ๋ก ๋๋ฆฌ๊ณ ๋ (๊ฐ์๊ธฐ ์๊ฐ ์ ๋ฉธ์)์ด ๊ฑธ๋ฆฌ๋๋ผ
speed๋ฅผ ํ 120์ ๋๋ก ํด์ผ ์ ๋นํ ์์ง์
๊ทธ๋์ ์ ๊ธฐ๋ถ๋ถ์ Fixed Update๋ก ์ฎ๊ฒจ์ ์คํํด๋ณด๋ ๋ ์ด ์๊ฑธ๋ฆฌ๊ณ ์๋๋ ์ ๋นํด์ง๋๋ผ๊ณ
๋ด๊ฐ ์๋ ์ฏค์ ํ์๋๋ Fixed Update๋ก ํ๋๊ฑฐ ๊ฐ์๋ฐ ์ ๋ํฐ์ธก์์ ์ ๋ฐ์ดํธ๋ก ์์ ํ ๋ด๊ฐ ๋ชจ๋ฅด๋ ์ด์ ๊ฐ ์์๊น?
https://learn.unity.com/tutorial/weoldeu-inteoraegsyeon-idong-cadan?uv=2020.3&projectId=5dcdc49dedbc2a00206ce6b0#5e475cb4edbc2a0021bebaf9
ํด๋น๋ถ๋ถ ํํ ๋ฆฌ์ผ ๋งํฌ
์ ๋ง ๋ฏธ๋ฌํ ํต์ฌ์ ์ฐ๋ฟ๋ค. ๋ ๊ณ ์์? FIXEDUPDATE์ UPDATE๋ฅผ ์ ๋ํฐ ๊ฐ๋ฐ์ฌ์์ ๊ฐํผ๋ฅผ ๋ชป์ก๊ณ ์์. ๋๋ ํํ ๋ฆฌ์ผ๋ก 60ํ๋ ์ ๊ตฌํํ๋ค๊ฐ ์์ ์ ํ๋ ์์ด ์๋์จ๋ค๋๊ฑธ ๊บ ๋ฌ์. ๊ทธ๋ฐ๋ฐ ๋ ์ง์ฆ๋๋๊ฑด UPDATE๋ก ๊ตฌํํ๋ฉด ๋ฐ๋์ ๊ธฐ๊ธฐ๊ฐ์ ๊ดด๋ฆฌ๊ฐ ๋ฐ์ํจ. ์ ์ฌ์์์ ๋ชป์ฐ๊ฒ๋จ. 30ํ๋ ์๊ธฐ๋ฐ์ ์์ง์์ค์ด๋ผ ๊ทธ๋ฐ๊ฐ๋ณด๋ค ์ถ๋ค. ์ ๋ํฐ ์ญ์๋ค FIXEDUPDATE ๊ธฐ๋ณธ ์ค๊ณ๋ถํฐ ์ํฐ๋ฆฌ์ธ์ง ์์ฌ์ด ๋ค๊ณ ์์. ์ด๋ฐ๊ฑฐ ์ ๊ฒฝ์์ธ๋ผ๋ฉด ๋จ๋คํ๋ฏ์ด ์นด๋๊ฒ๊ฐ์๊ฑฐ ๋ง๋๋์ฉ๋ ์ถ์ฒ
๋ด๊ฐ ํ๋ง์ด ์ ๋น์ฑ์๋๊ฒ SMOOTHDELTATIME์ ์กด์ฌ์ ์ง๋ค๋ ์ด์ํ๋๊น ํฌ์ํ ๊ฑธ ์ฌ๋ฌ๊ฐ ๋ง๋ค์ด๋๋๋ฐ ํจ๊ณผ๊ฐ ๋ฏธ๋นํจ. ๊ทธ๋ฆฌ๊ณ INTERFOLATE ๋ณด๊ฐ์์คํ ๋ ๋ฃ์๋๋ฐ ์ด๊ฒ๋ ๋ฏธ๋ฌํ๊ฒ ํน์ ์ํฉ์์ ์ด๊ธ๋จ.
๊ฐ์ด๋ณด์ ๊ฑ ์ง๋๋ฒ์ ํด๋ณธ๊ฑฐ ์ค๋๋ง์ ๋ณต์ตํ๋ค ์ด์ ์ ๋๋๊ฒ ์ด์ํ๊ฒ ์๋๋ ์ง๋ฌธ์ฌ๋ฆฐ๊ฑฐ์์. ๊ทธ๋ผ rigidbody๋ box collider ๊ฐ์๊ฒ ์ฐ์ธ๋ค ์ถ์ผ๋ฉด ์ฃ๋ค fixedUpdate๋ก ๋๋ฆฐ๋ค ์๊ฐํ๊ณ ๋ง๋ค์ด๋ ๋๋๊ฑธ๊น