|
| |
精品推荐 |
 |
|
| |
|
|
|
|
Flash AS制作小球自由运动和碰撞检测的动画
|
日期:2007年9月23日 作者: 查看:[大字体
中字体 小字体]
|
collisionision_angle = Math.atan2(dy, dx); magnitude_1 = Math.sqrt(ball.xspeed*ball.xspeed+ball.yspeed*ball.yspeed); magnitude_2 = Math.sqrt(ball2.xspeed*ball2.xspeed+ball2.yspeed*ball2.yspeed); direction_1 = Math.atan2(ball.yspeed, ball.xspeed); direction_2 = Math.atan2(ball2.yspeed, ball2.xspeed); new_xspeed_1 = magnitude_1*Math.cos(direction_1-collisionision_angle); new_yspeed_1 = magnitude_1*Math.sin(direction_1-collisionision_angle); new_xspeed_2 = magnitude_2*Math.cos(direction_2-collisionision_angle); new_yspeed_2 = magnitude_2*Math.sin(direction_2-collisionision_angle); final_xspeed_1 = ((ball.mass-ball2.mass)*new_xspeed_1+(ball2.mass+ball2.mass)*new_xspeed_2)/(ball.mass+ball2.mass); final_xspeed_2 = ((ball.mass+ball.mass)*new_xspeed_1+(ball2.mass-ball.mass)*new_xspeed_2)/(ball.mass+ball2.mass); final_yspeed_1 = new_yspeed_1; final_yspeed_2 = new_yspeed_2; ball.xspeed = Math.cos(collisionision_angle)*final_xspeed_1+Math.cos(collisionision_angle+Math.PI/2)*final_yspeed_1; ball.yspeed = Math.sin(collisionision_angle)*final_xspeed_1+Math.sin(collisionision_angle+Math.PI/2)*final_yspeed_1; ball2.xspeed = Math.cos(collisionision_angle)*final_xspeed_2+Math.cos(collisionision_angle+Math.PI/2)*final_yspeed_2; ball2.yspeed = Math.sin(collisionision_angle)*final_xspeed_2+Math.sin(collisionision_angle+Math.PI/2)*final_yspeed_2; } _root.onEnterFrame = function() { for (x=1; x<number_of_balls; x++) { for (y=x+1; y<=number_of_balls; y++) { distance_x = Math.abs(_root["ball_"+x]._x-_root["ball_"+y]._x); distance_y = Math.abs(_root["ball_"+x]._y-_root["ball_"+y]._y); distance = Math.sqrt(distance_x*distance_x+distance_y*distance_y); if (distance<=30 && (_root["ball_"+x].collision == 0 or _root["ball_"+y].collision == 0)) {
上一篇:黑客、红客、蓝客、飞客究竟是什么?
下一篇:Photoshop使普通照片变得具有视觉冲击效果
|
| 相关文章: |
|
|
|
| 相关软件: |
|
|
|
|