Adobe Flash CS4旋转数学
我目前遇到了旋转对象面临另一个对象的问题。目前它可以正常工作,因为在这张图片中,我的对象在原点将能够旋转并移动到3象限中的对象,除了正90度到180度的象限度,我的对象将旋转几个完整的旋转一段时间,而移动到对象有没有人知道为什么? 我用来旋转的句子是rotation += (foodLocationDegrees - (rotation - 90)) * .2;
由此使用计算食物
var angle:Number = Math.atan2(foodTarget.y - y, foodTarget.x - x);
foodLocationDegrees =Math.floor((angle * 180 / Math.PI));
y和x是鱼的对象,食物目标是食物的对象。
public function moveToFood():void
{
var dx:Number = x - _destinationX;
var dy:Number = y - _destinationY;
trace("Food location degree relative to fish mouth "+foodLocationDegrees);
var targetRotation:Number = 0;
if (foodLocationDegrees > 0 && foodLocationDegrees < 90)
{
trace("food is on 1st quadrant of the fish mount");
this.x -= dx / 18;
this.y -= dy / 18;
}else if (foodLocationDegrees > 90 && foodLocationDegrees < 180)
{
trace("food is on 2nd quadrant of the fish mount");
this.x -= dx / 18;
this.y -= dy / 18;
}else if (foodLocationDegrees > -180 && foodLocationDegrees < -90)
{
trace("food is on 3nd quadrant of the fish mount");
this.x -= dx / 18;
this.y -= dy / 18;
}else if (foodLocationDegrees < 0 && foodLocationDegrees > -90)
{
trace("food is on 4nd quadrant of the fish mount");
this.x -= dx / 18;
this.y -= dy / 18;
}
trace("Before adding Rotation " + rotation);
var number:Number = (foodLocationDegrees - (rotation - 90)) * .1;
trace("rotation to add "+number);
rotation += (foodLocationDegrees - (rotation - 90)) * .2;
trace("After adding Rotation " + rotation);
//removing food when both hit boxes hit
if (hit.hitTestObject(foodTarget.hit))
{
foodInPond--;
foodTarget.removeSelf();
}
}
public function moveToFood(food:Food):void
{
var speed:Number = 6.5;
var a:Number = food.x - x;
var b:Number = food.y - y;
var ang:Number = Math.atan2(b, a);
rotation = ang * 180 / Math.PI;
x += Math.cos(ang) * speed;
y += Math.sin(ang) * speed;
}
难道你不能只用sin
和cos
来朝着你所面对的方向前进吗?