Unity_개발일지_15

홍신영·2024년 10월 22일
0

Unity

목록 보기
17/62

AddForce이용하기

로켓시뮬레이션을 만들어보자.

rb.AddForce(Vector2.up * SPEED, ForceMode2D.Impulse); //힘/질량 값으로 속도를 변경

위 코드처럼 vector2.up으로 윗 방향으로 speed만큼 주는 이렇게만 주면 힘이 부족하다.
상수값을 곱해줘서 구현할 수도 있지만 유니티에서 제공하는 AddForce를 이용해보자.

아래는 유니티문서에서 가져왔다.

선언
public void AddForce(Vector3 force, ForceMode mode = ForceMode.Force);

ForceMode.Force: 입력을 힘(뉴턴 단위로 측정)으로 해석하고 force * DT / mass 값으로 속도를 변경합니다. 효과는 시뮬레이션 스텝 길이와 몸체의 질량에 따라 달라집니다.

ForceMode.Acceleration: 매개 변수를 가속도(초당 미터의 제곱으로 측정)로 해석하고 force * DT 값으로 속도를 변경합니다. 효과는 시뮬레이션 스텝 길이에 따라 달라지지만 몸체의 질량에는 의존하지 않습니다.

ForceMode.Impulse: 매개변수를 임펄스(뉴턴-초 단위로 측정)로 해석하고 힘/질량 값으로 속도를 변경합니다. 효과는 신체의 질량에 따라 달라지지만 시뮬레이션 단계 길이에는 의존하지 않습니다.

ForceMode.VelocityChange: 매개 변수를 직접 속도 변화(초당 미터 단위로 측정)로 해석하고 force 값으로 속도를 변경합니다. 효과는 신체의 질량이나 시뮬레이션 스텝 길이에 따라 달라지지 않습니다.

내가 구현한 프로젝트는 2d로 개발했기에 선택지가 몇 가지 없었다.
이 중 Impulse를 이용하여 로켓 발사를 구현하였다.

profile
게임 클라이언트 개발자

0개의 댓글