1.3 让物体沿任意方向运动【三角函数、正弦、余弦、弧度】

我们已经学习了让物体沿水平、斜方向运动。这次我们再进一步,学习如何让物体沿任意方向运动吧。

假设物体的运动速度为v,那么物体沿任意方向的运动一般都可以被拆分成为x轴,y轴两个方向上的运动。假设拆分后在x轴方向的速度为vx,在y方向上的速度为vy,物体运动方向与x轴方向的夹角为θ

1.3 让物体沿任意方向运动【三角函数、正弦、余弦、弧度】_第1张图片


vx = cosθ * v

vy = cosθ * v


使用弧度让物体的运动方向每次都不一样

package 
{

	import flash.display.MovieClip;
	import flash.events.Event;
	

	public class Main extends MovieClip
	{
		private var vx:Number = 4;
		private var vy:Number = 4;
		private var angle:Number = 0;
		
		public function Main()
		{
			vx = 4 * Math.cos(angle);
			vy = 4 * Math.sin(angle);
			this.addEventListener(Event.ENTER_FRAME, onFrame);
		}
		
		private function onFrame(e:Event)
		{
			plan.x += vx;
			plan.y += vy;
			
			//如果飞机飞出舞台,重置其坐标
			if (plan.x > stage.stageWidth || plan.x < 0 || plan.y > stage.stageHeight || plan.y < 0)
			{
				plan.x = stage.stageWidth / 2;
				plan.y = stage.stageHeight / 2;
				
				//增加角的弧度 
				angle += 2 * Math.PI / 30;
				//经过一周后 弧度重置
				if (angle > 2 * Math.PI)
				{
					angle -= 2 * Math.PI;
				}
				
				vx = 4 * Math.cos(angle);
				vy = 4 * Math.sin(angle);
			}
		}
	}
}

这个程序的关键点在于移出画面外时的处理。

				//增加角的弧度 
				angle += 2 * Math.PI / 30;
				//经过一周后 弧度重置
				if (angle > 2 * Math.PI)
				{
					angle -= 2 * Math.PI;
				}

此处 角度 递增使用2*Math.PI / 30,可直观的看出每次增加1/30周。

下面的重置弧度则是为了避免出现过大的弧度值,过大的弧度值可能会在计算时出现差错,以及避免运算时间过长。







你可能感兴趣的:(1.3 让物体沿任意方向运动【三角函数、正弦、余弦、弧度】)