[Unity] 6. 힘과 가속도

홍예주·2022년 1월 14일
0

Unity - 수학,물리

목록 보기
6/7

1. 강의 정리

2. 실습

1) 힘을 가하는 방식

  • 3D ForceMode
    1) Force
    2) Impulse
    3) Acceleration
    4) VelocityChange
  • 2D ForceMode
    1) Force
    2) Impulse
     if (Input.GetKeyDown(KeyCode.A))
            boxRigidbody.AddForce(transform.right * movePower, ForceMode.Impulse);
        else if (Input.GetKey(KeyCode.S))
            boxRigidbody.AddForce(transform.right * movePower, ForceMode.Force);
        else if (Input.GetKeyDown(KeyCode.D))
            boxRigidbody.AddForce(transform.right * movePower, ForceMode.VelocityChange);
        else if (Input.GetKey(KeyCode.F))
            boxRigidbody.AddForce(transform.right * movePower, ForceMode.Acceleration);
    

2) Force VS Impulse

  • Force

    boxRigidbody.AddForce(transform.right * movePower, ForceMode.Force);

  • Impulse

    boxRigidbody.AddForce(transform.right * movePower, ForceMode.Impulse);

공통점

  • impulse와 force는 전부 질량에 영향을 받는다.(F=ma)
  • 2D, 3D에서 사용 가능(Unity)

차이점

  • Impulse
    - 게임에서는 순간적인 힘을 가할 때
    • Impulse는 1 second동안 가해진 힘의 합
  • Force
    - 게임에서는 지속적으로 힘을 가할 때

변환

일정 시간동안 가해졌던 힘의 합 = 충격량
Impulse는 1 second동안 가해진 힘의 합
FixedUpdate 1번에 0.02초, 1초에 50번 업데이트
(ProjectSetting - time에서 확인 가능)
1초동안 힘을 50번 가함, force* 50이 impulse와 같아짐

Force / Fixed Timestep = Impulse

3) VelocityChange VS Acceleration

  • VelocityChange

    boxRigidbody.AddForce(transform.right * movePower, ForceMode.VelocityChange);

  • Acceleration

    boxRigidbody.AddForce(transform.right * movePower, ForceMode.Acceleration);

공통점

  • Acceleration과 VelocityChange는 전부 질량과 무관하게 힘을 가함
    => 질량이 달라도 같은 속도로 움직임(주어진 값이 동일하면)
  • 3D에서만 사용 가능(Unity)

차이점

  • VelocityChange
    - 게임에서는 순간적인 힘을 가할 때
  • Acceleration
    - 게임에서는 지속적으로 힘을 가할 때

변환

Acceleration / Fixed Timestep = VelocityChange

profile
기록용.

0개의 댓글

관련 채용 정보