반응형
728x170
안녕하세요 유니티 비기너입니다.
이번 시간에는 물체를 이동시키는 AddForce와 Velocity의 차이점을 비교해보겠습니다.
화면 구성
먼저 테스트를 진행하기 위해 다음과 같이 오브젝트를 구성하였습니다.
Addforce 스크립트를 포함하는 오브젝트, Velocity 스크립트를 포함하는 오브젝트, Goal오브젝트
3개의 오브젝트에는 모두 BoxCollider를 추가하였고 이동하는 오브젝트는
Rigidbody2 D 컴포넌트를 추가하고 중력 Gravity를 제거해줍니다.
스크립트 Velocity
public float speed;
private Image myImage;
private Rigidbody2D rb2D;
private void Awake() {
myImage = GetComponent<Image>();
rb2D = GetComponent<Rigidbody2D>();
}
void Update() {
rb2D.velocity = Vector2.right * speed;
}
private void OnCollisionEnter2D(Collision2D collision) {
myImage.color = Color.red;
}
매프 레임마다 velocity를 사용하여 우측방향으로 speed 만큼의 힘으로 이동합니다.
OnCollidersionEnter2D는 Goal라인에 도착 시 도착을 알리기 위해 큐브의 색을 변경해주는 코드입니다.
스크립트 AddForce
void Update()
{
rb2D.AddForce(Vector2.right * speed);
}
Update문 안의 코드를 제외한 부분은 전부 Velocity 스크립트와 동일합니다.
결과 화면
결과 화면과 같이 AddForce는 같은 힘을 연속해서 가하면 자동차의 가속 페달처럼 점점 가속화합니다.
그에 비해 Velocity는 같은 힘을 가해도 동일한 속도로 달릴 수 있도록 물리엔진이 자동으로 계산해줍니다.
그래서 AddForce의 경우 순간적으로 튀어 오르고 점차 속도가 줄어들면서 떨어지는 점프에 적합하고
동일한 속도를 달리는 러너게임 캐릭터 같은 경우 Velocity가 적합합니다.
위와 같은 결과가 있다 해도 구현 방식에 따라 보이는 방법은 무궁무진하기 때문에
다양한 방법으로 적용하고 활용하는 것이 좋을 것 같습니다.
반응형
그리드형
'유니티실습' 카테고리의 다른 글
유니티 키스토어 생성하기 (0) | 2020.05.15 |
---|---|
유니티 일시정지 상태에서 애니메이션 동작 (1) | 2020.05.14 |
유니티 비동기 로딩 1편 - 로딩 씬 만들기 (2) | 2020.05.05 |
유니티 체력게이지 제어하기 (0) | 2020.05.01 |
유니티 스크롤이동 (0) | 2020.04.29 |