| 首页 | 新闻 | 网页 | 设计 | 色彩 | 原创 | 视觉 | 素材 | 动漫 | 酷站 | 策划 | 文案 | 访谈 | 运营 | 编程 | 数据库 | 服务器 | 下载 | 图库 | 
您的位置: 幽幽天空 > 网页 > 网页制作 > Flash教程 > ActionScript教程 > 文章正文 用户登录
新手速建海量软件
物理知识在FLASH世
浅谈应用按钮事件
浅谈AS的绘图功能
浅谈AS与物理运动
利用文本框制作简
初级物理模型的构
初级物理模型的构
初级物理模型的构
初级物理模型的构

初级物理模型的构建(AS)-力学1 简单的碰撞的小应用           

初级物理模型的构建(AS)-力学1 简单的碰撞的小应用

作者:佚名 来源:闪吧 作者: EmilMatthew 更新:2007-1-13 20:47:27 错误报告 我要投稿

例子4:子母球:

子母球讲的是这样一种有趣的物理现像:一小一大两个小球自上而下在同一X方向下落下(小球再大球的上面),当小球碰到从地面上弹起的大球时,会返弹的比起始高度更高。

思路:两个小球处于一个重力场中,两个小球间的碰撞检测(完全弹性碰撞),大球的触底碰撞(能量有耗损)。

程序清单:



#include "Physics.as"

function collsion(mc1, mc2) {

var v1temp = mc1.v;

var v2temp = mc2.v;

mc1.v = ((mc1.m-mc2.m)/(mc1.m+mc2.m))*v1temp+(2*mc2.m/(mc1.m+mc2.m))*v2temp;

mc2.v = (2*mc1.m/(mc1.m+mc2.m))*v1temp-((mc1.m-mc2.m)/(mc1.m+mc2.m))*v2temp;

}

function ballcollsiondetect(mc1, mc2) {

if (mc1.getBounds(_root).yMax>=mc2.getBounds(_root).yMin) {//根据这里的实际情况,简化碰撞的检测

mc1._y = mc2._y-mc2.r-mc1.r; // 这个调整是必须的,否则会因为微小的量变而导致质变。

collsion(mc1, mc2);

}

}

function bordercollsiondetect(mc) {// 垂直碰边的判断。

if (mc.getBounds(_root).yMax>=600) {

mc._y = 600; // Important!否则会因为微小的积累而导致质变---穿出地面。

mc.v *= -0.9; // 还是有点衰减为好。

}

}

_root.onLoad = function() {

g = 2;

balla.a(g);

ballb.a(g);

balla.v(0);

ballb.v(0);

balla.m(2);

ballb.m(4);

balla.r(20);

ballb.r(40);

};

_root.onEnterFrame = function() {

ballcollsiondetect(balla, ballb);

bordercollsiondetect(ballb);

balla.v += balla.a;

ballb.v += ballb.a;

balla._y += balla.v;

ballb._y += ballb.v;

trace(ballb.v);

};

演示:

UploadFile/2004-8/200481515522625.swf

好了,我目前所能写的碰撞检测也就这些水平了,更好的碰撞检测需要更好的办法和更多的数学知识

文章录入:skyuu    责任编辑:skyuu 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    发表评论:
    姓名:  评 分: 1分 2分 3分 4分 5分
     
  • 严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
  • 用户需对自己在使用幽幽天空服务过程中的行为承担法律责任。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表机友个人观点,与本网站立场无关。