▣ 안녕하세요. 이번장에서는 AddForce와 Velocity 차이에 대해 공부해보겠습니다.
▣ 우선 3D 프로젝트를 생성해주시고, Plane와 원모 양에 Player를 생성해주세요.
그리고 Player에 Rigidbody를 넣어주시고 Player라는 스크립트도 생성해서 넣어주세요.
▣ 이제 스크립트를 작성해보겠습니다.
먼저 플레이어 속도 변수를 만들어주시고, Rigidbody를 사용할 변수도 만들어 Start() 함수에서
GetComponent로 대입해주세요.
그런 다음에 X, Z변수에 GetAxis값으로 입력 값을 대입해주시고
AddForce() 함수를 이용하여 힘을 줘서 Player를 움직이는 코드를 작성하겠습니다.
3D에서는 앞뒤에 값은 Z이기 때문에 (x, y, z) 순으로 값을 대입했습니다.
저장을 하고
▣ 플레이를 하고 앞뒤, 오른쪽 왼쪽을 움직이면 이렇게 힘에 의해 조절하기가 어려운 걸 확인할 수 있습니다.
▣ 다시 스크립트로 돌아가서 이번에는 AddForce가 아닌 velocity 변수에 값을 넣어 움직여 보겠습니다.
AddForce() 함수와 다르게 velocity는 변수이기 때문에 Vector값을 대입했습니다.
▣ 그리고 다시 player를 움직이면 아까와 다르게 정확하게 딱딱 속도에 의해서만 움직이는 걸 확인할 수 있습니다.
▣ 그런데 한가지 문제가 있습니다.
떨어지려고 바닥을 벗어나서 나가면 거의 떨어지지는 않는 걸 확인할 수 있습니다.
▣ 그건 아까 Vector3(x, y, z)에서 y값을 계속 업데이트에서 0으로 초기화했기 때문에
이걸 고치려면 변수값 그대로를 넣으면 됩니다.
▣ 이렇게 지역변수인 fall이라는 변수를 만들어주시고 velocity.y 값을 대입해주세요.
그리고 Vecotr3(x, fall, z) 이렇게 값을 넣어주게 되면
업데이트에서 매프레임마다 바뀐 자신에 값을 대입해야 중력에 영향을 받은 자신에 값 때문에
포지션이 바뀌기 때문입니다.
▣ 저장을하고 확인하면 제대로 떨어지는 걸 확인할 수 있습니다.
▣ 정리하면 AddForce는 가해지는 힘을 누적시켜 속도를 증가시켜 이동, 물리, 질량, 관성에 영향을 받는 함수입니다.
그렇기 때문에 물리, 질량, 관성에 의해 앞으로 갔다가 다시 뒤로 가려면 관성에 영향을 다 계산하고 가기 때문에 조절하기가 어려웠습니다.
Velocity는 속도를 나타내주는 변수로 질량 관성 무시하고 주어진 속도로 이동하기 때문입니다.
▣ AddForce, Velocity에 차이를 직접 확인해보시고 용도에 맞게 사용하면서 연습해보세요.
'[ Unity ] > - 유니티 실습' 카테고리의 다른 글
유니티 - [Destroy, ParticleSystem, GetComponentInChildren] (0) | 2022.03.27 |
---|---|
유니티 - [글로벌좌표, 로컬좌표, 이동, Space.World] (0) | 2022.03.21 |
유니티 - [collider2D, composite, Box Collider 2D (0) | 2022.03.04 |
유니티 - [마우스 위치로 발사, ScreenToWorldPoint, 프리펩] (2) | 2022.03.03 |
유니티 - [텍스트를 오브젝트로 제작, UI Text 오브젝트로 Text Mesh] (0) | 2021.09.05 |
댓글