2016-10-13 00:16:48 点击量:22 标签: 收藏本文
Flex,flash游戏中经常用到的就是碰撞检测与距离检测了,下面列举了几种常见的情况:
- wall.hitTestPoint(player.x,player.y,true);
- /**
- * x1,y1,r1:第一个圆的x坐标,y坐标和半径
- * x2,y2,r2:第二个圆的x坐标,y坐标和半径
- */
- private function checkCircleCollide(x1:Number, y1:Number, r1:Number, x2:Number, y2:Number, r2:Number):Boolean{
- var dx:Number = x1 - x2;
- var dy:Number = y1 - y2;
- var r:Number = r1 + r2;
- if (dx*dx + dy*dy < r*r) {
- return true; //cuplayer.com提示:相交
- }else{
- return false; //cuplayer.com提示:不相交
- }
- }
- sprite1.hitTestObject(sprite2);
4,圆与一个不规则图形的碰撞检测(在圆周上取一系列的采集点,分别进行碰撞测试)
- /**
- * 判断一个点与目标物体是否发生碰撞
- * x,y,r测试圆的x坐标,y坐标,半径
- */
- private function checkCollide(x:Number, y:Number, r:Number, wall:Sprite):Boolean{
- // 角度临时变量
- var rayAngle:Number;
- // 精度 precision,取这个圆周上的20个测试点
- var precision:Number=20;
- // 判断每个测试点是否与目标物体发生碰撞
- for (var i:Number=0; i<=precision; i++) {
- // 根据精度,算出角色元件 一圈判断点的角度
- rayAngle=2*Math.PI/precision*i;
- // cuplayer.com提示:判断点是否与墙壁碰撞
- if (wall.hitTestPoint(x+r*Math.cos(rayAngle),y+r*Math.sin(rayAngle),true)) {
- // 发现并记录该点
- return true;
- break;
- }
- }
- return false;
- }
我们是一家提供综合软件外包与弱电工程服务的技术公司。
业务涵盖定制软件、管理系统、网站、小程序、APP、系统集成、网络布线、监控安防、门禁、机房建设及长期技术维护。
公司地址:湖北省宜昌市伍家岗区东站二路6号三峡(宜昌)大数据产业园海洋馆二楼A203室