소소한 나의 하루들

힘을 이용하여 물체 움직여보기_Rigidbody 본문

개발/유니티

힘을 이용하여 물체 움직여보기_Rigidbody

소소한 나의 하루 2024. 1. 18. 22:50

출처: https://youtube.com/playlist?list=PLO-mt5Iu5TeYI4dbYwWP8JqZMC9iuUIW2&feature=shared

 

📚 유니티 기초 강좌

유니티 게임 개발을 배우고 싶은 분들을 위한 기초 강좌

www.youtube.com

RigidBody 컴포넌트를 컨트롤하기 위해서 스크립트를 활용한다. 스크립트 안에서 함수를 호출하거나 변수를 변경하거나 해준다.

#1. 컴포넌트 가져오기

코드의 흐름은 선언>초기화>호출이다.

GetComponent<타입>() : 자신의 타입 컴포넌트를 가져오는 메소드이다.


#2. 속도 올리기

velocity: 현재 이동속도

velocity는 Vector3이다.  rigidBody에 velocity라는 변수를 사용해서 속도를 지정해줄 수 있다.

만약 Update()에서 호출하면 계속 실행되므로 속도가 계속 유지된다.

*우리가 이러한 물리 현상에 대한 로직을 실행하려면 Update()가 아니라, FixedUpdate()에 작성해주는 것이 좋다.

(RigidBody 관련 코드는 FixedUpdate()에 작성한다.)

 

rigid.velocity = Vector3.right;

velocity는 현재이동속도를 뜻하는데, 벡터계열이다.

실행시키면, 현재이동속도로 오른쪽방향으로 굴러간다. :속력을 주고 나머지 현상은 전부 물리현상에 맡긴 것이다.

rigid.velocity = new Vector3(2, 4, 3);

새롭게 단위벡터를 입력해보면, 그 좌표로 이동했다가, 중력의 영향을 받고 떨어지거나 굴러간다.

 


#3. 힘으로 밀기

AddForce(vec): Vec의 방향과 크기로 힘을 주는 메소드

(Vector)

(벡터, ForceMode)

매개변수로 기본적으로 벡터값이 들어가지만, 매개변수를 2개 넣을 수 있다.

ForceMode는 힘을 주는 방식이다. (가속, 무게 반영) Acceleration, Force , Impulse, VelocityChange를 입력할 수 있다. 가장 많이 사용하는 것은 Impulse이다. (캐릭터 점프할때 등)

AddForce(방향*힘, 힘의종류)라고 볼 수 있다.

 

ForceMode는 무게에 영향을 받아서 무게 값이 클수록 더 많은 힘이 필요하다.


#4. 회전력 주기

AddTorque(Vec) : Vec 방향을 축으로 회전력이 생긴다.

매개변수로 입력한 벡터를 축으로 삼기 때문에 이동방향에 주의해야한다.

 

단위벡터 (크기가 1인 방향벡터)

Vector3.up Vector3.down / Vector3.right / Vector3.left / Vector3.forward / Vector3.back 등등

여기에 힘(스칼라)를 곱해줄 수 있다.

'개발 > 유니티' 카테고리의 다른 글

게임 인터페이스_UGUI 기초  (0) 2024.01.20
물리 충돌 이벤트  (0) 2024.01.19
실제와 같은 물체 만들기  (0) 2024.01.18
이동거리를 공평하게, 델타타임  (0) 2024.01.18
목표지점으로 이동시키기  (0) 2024.01.18
Comments