【发布时间】:2010-01-05 00:10:29
【问题描述】:
只是好奇。当我使用以下技术将球从舞台的墙壁上弹起时。
if(y > sRef.stageHeight || y < 0)
{
yDir = yDir * -1;
}
else if ( x > sRef.stageWidth || x < 0)
{
xDir = xDir * -1;
}
x += xspeed * xDir;
y += yspeed * yDir;
以上看起来不错,效果很好。但是,如果我选择使用如下角度来代替...
if(y > sRef.stageHeight || y < 0)
{
angle += 45;
}
else if ( x > sRef.stageWidth || x < 0)
{
//angle = angle * -1;
angle += 45;
}
vx = Math.cos(angle * Math.PI / 180) * bSpeed;
vy = Math.sin(angle * Math.PI / 180) * bSpeed;
x += vx;
y += vy;
球不仅跳跃而且跳跃。但经过这么多次之后,它开始以垂直运动 y = 5; x = 0;或水平运动 x = 5, y = 0。并保持这种状态。为什么第一种方法效果很好,而另一种方法效果很差。可能是因为 Math.cos 和 Math.sin 返回非常大的小数。有人可以帮帮我吗,因为我真的更喜欢使用第二种方法。
谢谢
【问题讨论】:
标签: flash actionscript-3 math animation