
AddForce()
물리 작용을 이용해 힘을 발생시키는 메서드.
Rigidbody 컴포넌트의 메소드이며
(Rigidbody가 없으면 작동 x)
점프, 물체 밀기 또는 폭발 생성과 같은 물리적 동작 등에 사용 됨.
힘의 적용 : Rigidbody를 가진 객체 등
첫 번째 인수 : Vector ( 힘을 가할 방향과 크기 ) ---> new Vector3(0, 1, 0) = Vector3.up 으로 편하게 나타 낼 수 있음.
두 번째 인수 : ForceMode ( 힘의 방식 )
| ForceMode | 설명 |
|---|---|
| .Force | 무게를 적용하고, 연속적인 힘을 가함 |
| .Impulse | 무게를 적용하고, 순간적인 힘을 가함 |
| .Acceleration | 무게를 적용하지 않고, 연속적인 힘을 가함 |
| .VelocityChange | 무게를 적용하지 않고, 순간적인 힘을 가함 |
연속적인 힘 -> 점진적인 속도 증가 = ex. 자동차 엑셀
순간적인 힘 -> 점프, 폭발 등 순간적으로 속도를 낼 때.
추가 설명
ForceMode.Force -> 물체 질량을 고려한 표준적인 힘
ForceMode.Acceleration -> 질량 고려 x, Force 보다 빠르다.
ForceMode.Impulse: 순간적인 힘, 질량을 고려함, ex) 폭발
ForceMode.VelocityChange -> 객체의 속도를 즉시 변경하고 싶을 때
public float jumppower; // 점프 힘
Rigidbody rb; // 플레이어의 리지드 바디 컴포넌트
// Start is called before the first frame update
void Start()
{
// 플레이어의 리지드 바디 컴포넌트 가져와서 저장
rb = GetComponent<Rigidbody>();
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space)) // Space 키를 누르면
{
// 위로 힘 발생
rb.AddForce(Vector3.up * jumpPower, ForceMode.Impulse);
}
}
! 점프 횟수 제한 안해주면 누르고 있는 동안 대기권을 돌파하기 때문에 jumpcount를 만들고 조건문을 통해 횟수 제한 해주어야 함.