1
Я пишу 2D-игру с обратной кинематикой. Я использую этот простой алгоритм:2D Зависимость угла обратной кинематики
let angleToParent = angleBetweenPoints(parent, child)
child.x = parent.x + distance*Math.cos(angleToParent)
child.y = parent.y + distance*Math.sin(angleToParent)
child.rotation = angleToParent
Как реализовать угловое ограничение для детей?
Этот код работает неправильно, когда вращение родителя пересекаться на 180 градусов:
let implementBound = (lowerBound, upperBound, input) => {
return Math.min(Math.max(lowerBound, input), upperBound)
}
let constraint = (Math.PI/180)*15
let left = parent.rotation - constraint
let right = parent.rotation + constraint
angleToParent = implementBound(left, right, angleToParent)
В каком смысле вы имеете в виду? Не могли бы вы просто зажать 'angleToParent'? – pingul