- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第10章 碰撞检测
第10章 碰撞检测
10.1 什么是碰撞检测
10.2 Flash现成的碰撞检测方法
10.3 像素级碰撞检测方法
10.1 什么是碰撞检测
在Flash互动设计中,特别是在Flash游戏设计
制作中,需要知道两个或多个影片剪辑是否重叠或
相交,如运动的炮弹碰到物体发生爆炸,两辆汽车
发生碰撞产生翻车效果等。
要想创建这种类型的交互对象,首先需要使用
一种方法,来判断一个对象是否与另一个对象接触,
这种方法叫碰撞检测。
10.2 Flash现成的碰撞检测方法
Flash AS3.0中有两种现成的碰撞检测方法:
一、hitTestObject方法
二、hitTestPoint方法
4
一、hitTestObject方法
可以用来检测任意两个显示对象DisplayObject是否发生碰撞。格式如下:
public function hitTestObject(obj:DisplayObject):Boolean
调用这个函数作为影片剪辑的方法,将另一个影片剪辑
的引用作为参数传入。通常在if语句中使用:
if(DisplayObject1. hitTestObject(DisplayObject2)){
//碰撞后的动作
}
5
二、hitTestPoint方法
判断某个点与显示对象间是否发生了碰撞,可以
使用显示对象DisplayObject的hitTestPoint 方法。格式
如下:
public function hitTestPoint(x:Number, y:Number ):Boolean
计算显示对象,以确定它是否与 x 和 y 参数指定的点
重叠或相交。 x 和 y 参数指定舞台的坐标空间中的点。
6
实例制作1-碰花游戏
本项目是当鼠标碰触到舞台中随机分布的五彩花朵,花朵会立即“躲开”到别处。
制作思路:
通过复制库的花元件在舞台显示多只花,并且需要为舞台注册侦
听鼠标移动事件,在鼠标移动事件处理函数中逐一判断舞台上的花
是否鼠标光标发生碰撞,如果是,则改变此花位置。
案例效果
var i:uint=0;
while (i10) {
var flower_mc:Flower = new Flower();
this.addChild(flower_mc);
flower_mc.x =Math.random () * (stage.stageWidth - flower_mc.width/2);
flower_mc.y =Math.random () * (stage.stageHeight - flower_mc.height/2);
flower_mc.scaleX=flower_mc.scaleY=0.6+Math.random()*0.4;
i=i+1;
}
this.addEventListener(MouseEvent.MOUSE_MOVE,moveHandle);
function moveHandle(e:MouseEvent) {
var j:uint=0;
while (j10) {
if (this.getChildAt(j).hitTestPoint(this.mouseX,this.mouseY)) {
this.getChildAt(j).x=Math.random()*stage.stageWidth;
this.getChildAt(j).y=Math.random()*stage.stageHeight;
this.getChildAt(j).alpha=Math.random();
this.getChildAt(j).scaleX=this.getChildAt(j).scaleY=Math.random();
}
j=j+1;
}
}
9
实例制作2-射箭游戏
用鼠标来控制箭的移动,当松开鼠标的时候,将箭发射出去,如果发出的箭刺中花朵,则花朵播放一段花朵刺中的动画,箭不管刺中花朵与否,最终都会减速飞出舞台上方。
制作思路:
通过复制库的花元件在舞台显示多只花,并且这些花的位置、大小和颜色都是随机的。鼠标按下弓箭时,生成一只箭
的影片剪辑实例,这只箭在响应自身的
进入帧事件时不断减少Y轴坐标,同时
逐一判断是否与舞台上的花进行了碰撞。
案例效果
for (var i:uint=0
文档评论(0)