我正在编写具有逆运动学的 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)