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

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

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



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周。

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







  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值