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

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

Unity 혹은 그외에 다른 엔진에서 LerpAngle() 함수가 있다. 이 함수는 선형보간함수인 Lerp() 함수에 각도 A에서 각도 B로 회전을 할 경우, [0, π] 범위내의 회전각으로 각도 B에 도달할 수 있는 기능이 추가된 함수이다.

이 함수는 2D나 3D에서 매우 자주 쓰인다(예:캐릭터의 회전). 하지만 아쉽게도 Godot Engine(3.0.4 기준)에서는 lerp() 함수는 지원하지만 Unity의 LearAngle() 같은 함수는 아직 지원하지 않는다.

func lerp_angle(from_angle, to_angle, weight_value):
	if abs(from_angle - to_angle) >= PI: 
		if from_angle > to_angle:
			to_angle += 2 * PI
		else:
			from_angle += 2 * PI
	return lerp(from_angle, to_angle, weight_value)

<참고>
https://godotengine.org/qa/28776/rotate-kinematicbody2d-based-mouse-position-varying-rate

+ Recent posts