• 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
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    Mysql多表关系
    Linux权限
    Linux安装python环境脚本
    ZJNU 2136
    ZJNU 2135
    ZJNU 2133
    ZJNU 1699
    ZJNU 1542
    ZJNU 1538
    ZJNU 1535
  • 原文地址:https://www.cnblogs.com/ywxgod/p/1785676.html
Copyright © 2020-2023  润新知