flash旋转坐标

关于flash的angleBounce  有角度回弹实现步骤:

思想就是把问题归结到我们可以解决的平面回弹,那么就是将ball的速度(向量)旋转,以及ball与侧面起点的差额(向量)的旋转,旋转结束之后就速度发生改变,然后旋转回来。

1.获得基本信息:

//获得角、正弦和余弦
var angle:Number = line.rotation * Math.PI / 180;
var cos:Number = Math.cos(angle);
var sin:Number = Math.sin(angle);
//获取小球相对于线条的位置
var x1:Number = ball.x - line.x;
var y1:Number = ball.y - line.y;
 

2.旋转的公式:

//旋转坐标
var x2:Number = cos*x1 + sin*y1;
var y2:Number = cos*y1 - sin*x1;
			
//旋转速度 
var vx1:Number = cos*ball.vx + sin*ball.vy;
var vy1:Number = cos*ball.vy - sin*ball.vx;
 

3.判断是否碰撞:

if(y2 > -ball.height / 2){
	y2 = -ball.height / 2;
	vy1 *= bounce;
}
 

4.碰撞完成之后旋转回来:

//将所有东西旋转回去
x1 = cos*x2 - sin*y2;
y1 = cos*y2 + sin*x2;
ball.vx = cos*vx1 - sin*vy1;
ball.vy = cos*vy1 + sin*vx1;
ball.x = line.x + x1;
ball.y = line.y + y1;

 这段代码写在Event.ENTR_FRAME事件的处理器中,就可以完成功能,但是这段代码是可以优化的,意思就是说旋转速度以及旋转回原位的这个动作,是可以放在判断是否碰撞的语句中的,可以节约大量的CPU。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值