flash中物体运动基础之四---------边界判断
紧接第三部分,现在加上边界,当球体运动碰到边界时,设为初始状态,在场景中放置了一个障碍物,当球体运动碰到障碍物时,随即改变障碍物的位置。
关键代码部分:
private function update(e:Event):void { var right:Number = wallRight.x - wallRight.width / 2; var top:Number = wallTop.y + wallTop.height / 2; var left:Number = wallLeft.x + wallLeft.width / 2; var bottom:Number = wallBottom.y - wallBottom.height / 2; if (_ball.x + _ball.width / 2 > right) { _ball.reset(_ballInitX, _ballInitY); } if (_ball.x-_ball.width/2<left) { _ball.reset(_ballInitX,_ballInitY); } if (_ball.y+_ball.height/2>bottom) { _ball.reset(_ballInitX, _ballInitY); } if (_ball.y-_ball.height/2<top) { _ball.reset(_ballInitX, _ballInitY); } var dx:Number = (_ball.x-coin.x) * (_ball.x-coin.x); var dy:Number = (_ball.y-coin.y) * (_ball.y-coin.y); var dist:Number = (_ball.width / 2 + coin.width / 2) * (_ball.width/2+coin.width/2); if (dx+dy<=dist) { coin.x = Math.random() * (right-2*coin.width/2 - left) + left+coin.width/2; coin.y = Math.random() * (bottom-2*coin.height/2-top) + top+coin.height/2; } }
wallLeft,wallRight,wallTop,wallBottom分别为舞台上的四面墙,用于检测球体运动的位置,当球碰到任何一面墙时,设置球为初始位置(此处也可以设置球为反方向运动)。
left,right,top,bottom分别表示球体在舞台上能运动的最左最右最上最下的位置。
coin为舞台上的一个障碍物,当球体碰到它是会随机改变位置。
总结:
当Ball不是规则的物体时,此方法不适用!此处关键点在判断球体出边界时的坐标计算,还有随机设置障碍物的位置也要注意考虑障碍物自身的注册点。
作者:ywxgod
E-mail:给我发邮件
出处:http://ywxgod.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
E-mail:给我发邮件
出处:http://ywxgod.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。