나는 올바른 아날로그 스틱으로 지연된 회전 효과를 만들려고 시도해 왔습니다. 아래의 코드는 올바른 아날로그 스틱의 입력을 기반으로 한 각도를 취하고 개체를 꾸준히 가깝게 만듭니다. atan2가 -pi에서 pi의 범위이기 때문에 변화하는 회전은 항상 pi가 아닌 0 라디안을 통해 이동하는 것이 좋습니다. 각도를 반대 방향으로 움직이는 방법이 있습니까?지연 회전에 atan2 사용
private void Angle()
{
//Angle to go to
RotationReference = -(float)(Math.Atan2(YR, XR));
//Adds on top of rotation to steadily bring it closer
//to the direction the analog stick is facing
Rotation += (RotationReference - Rotation) * Seconds *15;
Console.WriteLine(RotationReference);
}
편집 : 0 문제에 2pi 사이의 전환을 발생 InBetween의 제안 방법을 사용하여 시도
. 이것은 내가 다른 것을 시도하게 만들었다. 왜 작동하지 않는지 나는 모른다.
private void Angle()
{
//Angle to go to
RotationReference = -(float)(CorrectedAtan2(YR, XR));
//Adds on top of rotation to steadily bring it closer
//to the direction the analog stick is facing
if (Math.Abs(RotationReference - Rotation) > Math.PI)
Rotation += ((float)(RotationReference + Math.PI * 2) - Rotation) * Seconds * 15;
else Rotation += (RotationReference - Rotation) * Seconds *15;
Console.WriteLine(RotationReference);
}
public static double CorrectedAtan2(double y, double x)
{
var angle = Math.Atan2(y, x);
return angle < 0 ? angle + 2 * Math.PI: angle;
}
이 뒤에 아이디어는 180도 이상을 여행해야하는 경우보다 큰 360도 여행 할 수있는 각도를 만들 것입니다. 이렇게하면 방향을 바꿀 필요가 없습니다.
여기서 찾고있는 키워드는 트위닝입니다. – craftworkgames