[英]How to move an angle variable towards a target angle in the shortest way
我的游戲單元有一個angle變量和一個targetAngle變量。 這些變量的范圍是1到360度。
角度變量應始終移向targetAngle變量。
問題是,它不會以最短的方式發生。 當targetAngle為350度且當前角度僅為10度時,變量應僅移動20度,而不是像我現在那樣增加340度。
如何使角度變量以最短的方式向targetAngle變量移動?
現場演示: http : //jsfiddle.net/zNsbc/
var angle = 10;
var targetAngle = 350;
setInterval(function() {
if ( angle > targetAngle ) {
angle--;
}
else if ( angle < targetAngle ) {
angle++;
}
$("#angle").text(angle);
}, 10);
您應該意識到360與0相同,因此您可以將角度與targetAngle以及targetAngle + 360進行比較,並將其移至最接近的方向(對於接近0的角度和targetAngle的接近角度,也請考慮-360 360)
所以你的例子:
angle: 10
targetAngle: 350 (diff 340)
targetAngle+360: 710 (diff 700)
targetAngle-360: - 10 (diff 20)
角度最接近targetAngle-360,因此您可以減少它,而不是增加它
注意 :確保取絕對值作為差值
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.