유니티 AddForce와 Velocity 차이점

2020. 5. 6. 22:32유니티실습

반응형
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가 적합합니다.

 

위와 같은 결과가 있다 해도 구현 방식에 따라 보이는 방법은 무궁무진하기 때문에 

다양한 방법으로 적용하고 활용하는 것이 좋을 것 같습니다.

 

반응형
그리드형