Я пытаюсь добиться поворота объекта, когда на сенсорной панели Sensel поворачивается два пальца.
private void RotateGesture(){
if(TwoFingersDown){
if(!rotating){
startAngle = new Vector2(FingerTwoXPos,FingerTwoYPos) - new Vector2(FingerOneXPos, FingerOneYPos);
rotating = startAngle.sqrMagnitude > rotationWidth * rotationWidth;
}
else{
curAngle = new Vector2(FingerTwoXPos,FingerTwoYPos) - new Vector2(FingerOneXPos, FingerOneYPos);
var angleOffset = Vector2.Angle(startVector, currVector);
var LR = Vector3.Cross(startVector, currVector);
if (angleOffset > rotAngleMinimum) {
startAngle = curAngle;
rotating = startAngle.sqrMagnitude > rotationWidth * rotationWidth;
if (LR.z > 0) {
// Anticlockwise turn equal to angleOffset.
Debug.Log("AntiClockwise turn");
}
else if (LR.z < 0) {
// Clockwise turn equal to angleOffset.
Debug.Log("Clockwise turn");
}
}
}
else{
rotating = false;
}
}
Проблема, с которой я столкнулся, заключается в том, что обнаружение поворота не кажется очень точным.Часто это говорит против часовой стрелки, когда я поворачиваю пальцы по часовой стрелке или наоборот.Как я могу это исправить?Я знаю, что sensel morph имеет много точек и очень чувствителен, но я попытался настроить rotAngleMinimum, и это, похоже, не помогает.Я в порядке с совершенно другим решением, чем у меня здесь, так как оно на самом деле не работает в любом случае.Мне также нужно уметь различать вращение двумя пальцами и горизонтальное движение двумя пальцами.