1

逆運動学を使って 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)
4

1 に答える 1