Unity

AddForce()

박도치 2024. 1. 3. 23:57

 

Rigidbody 중에 AddForce함수가 따로 있다. 이는 Rigidbody에 힘을 전달해주는 역할을 한다.

 

using UnityEngine;

private Rigidbody _rigidBody;

private float addForce = 1f;

private void Start()
{
    _rigidBody = GetComponent<Rigidbody>();
}

private void FixedUpdate() 
{
	Vector3 forceDirection = gameobject.transform.forward;
	_rigidBody.AddForce(forceDirection * addForce, ForceMode.Impulse);
}

 

 

rigidybody에 원하는 방향으로 자신이 원하는 만큼의 addForce를 주면 순간적으로 힘을 줘서(Impulse) 밀어내게된다

 

그러면 ForceMode는 무엇인가? 

 

ForceMode

 

어떤식으로 힘을 전달할지에 대한 것이다. 이는 Force, Acceleration, Impulse, VelocityChage

 

Force Add a continuous force to the rigidbody, using its mass.
Acceleration Add a continuous acceleration to the rigidbody, ignoring its mass.
Impulse Add an instant force impulse to the rigidbody, using its mass.
VelocityChange Add an instant velocity change to the rigidbody, ignoring its mass.

-출처 유니티 공식 문서 -

 

Acceleration 은 질량을 무시하고 연속적으로 힘을 주는 것이다.

Force는 질량이 있으면서 연속적으로 힘을 주는 것이다.

VelocityChage는 질량을 무시하면서 즉각적으로 힘을 주는 것이다.

Impulse는 질량이 있으면서 즉각적으로 힘을 주는 것이다.

 

그래서 순간적으로 질량있는 힘을 주고싶을 때, Impulse를 많이 사용한다.