1. 기본적으로는 둘다 delta값에 의해서 동기화를 하는 콜백 함수.

2. 물리엔진을 적용해서 사용해야하는 경우(예:KinematicBody)는 _physics_process() 함수를 써야한다.(RigidBody의 경우는 _integrate_forces()를 사용해야 한다.)

3. Key값은 _process()에서 받고, KinematicBody의 제어는 _physics_process()에서 할 경우, 동기화 문제로 인하여 Jittering이 발생할 수 있으므로, 이런 경우는 Key값도 _physics_process()에서 담당하도록 코딩을 한다.

_process(delta)나 _physics_process(delta)처럼 _integrate_forces(state)안에서 delta값을 사용하고 싶을 때는 step을 사용한다.


func _physics_process(delta):
	print("Delta: ", delta)

func _integrate_forces(state):
	print("Step: ", state.step) # or print("Get_Step(): ", state.get_step())

1. _physics_process()함수 안에 lerp()함수의 결과값을 RigidBody에 바로 적용시키지 말아야 한다. 적용시에 Snake, Frame drop이 일어나며, 심한 경우에는 Jittering까지 일어난다.

2. 실시간으로 lerp()함수의 결과값을 구하여 RigidBody에 적용하여 물리적 특성을 변경하고자 할 경우, _physics_process()함수 안에서 lerp()함수를 사용하여 결과값을 얻은 후에 _integrate_forces()함수 안에서 적용시켜야 한다.

1. 2.x버전의 _fixed_process() 함수가 3.x버전부터는 _physics_process() 함수로 변경되었다.

2. _physics_process(delta) 함수내에 코드가 작성된 상태라면, _ready() 함수내에서 set_physics_process(true)를 자동으로 호출한다. 물론 필요에 따라서 수동으로 set_physics_process(false)를 하여 _physics_process() 함수를 비활성화 할 수도 있다.

3. _process() 함수를 사용하여, 2D 혹은 3D에서 오브젝트(나의 경우는 RigidBody)를 이동시킬 때, 오브젝트가 shaking(간혈적으로 흔들리거나 떨리는) 현상이 발생한다면, _physics_process() 함수로 변경하면 shaking 현상이 호전되거나 사라질 수 있다. 하지만 Jittering 현상이면 이걸로는 해결할 수 없다.

+ Recent posts