zoukankan      html  css  js  c++  java
  • flash中物体运动基础之六方向与角度

    接着第五部分障碍物,有时候在某些特别的情况下需要球体能通过某个障碍物,并不是所有的障碍物都需要阻止球体运动,例如有一竖直障碍物当球体从左到右通过时能通过,但从右到左通过时,却不能通过,那该如何做呢?此时最容易想到的是判断球体的运动方向,根据球体前后连个x坐标即可以知道它是从左到右运动还是从右到左运动。这种做法可以解决问题,但遇到特殊的要求就无能为力了,例如障碍物有一定的角度,要求球体在一定角度范围能才能通过,那此时就需要考虑球体的方向了。下面的例子中允许球体从左向右通过竖直障碍物。

    在flash中0度为右水平方向,90度在向下方向,180度为左水平方向,270为向上方向,如上图:要使球体只能从一边(左到右)通过障碍物,那么他的角度必须要在0-90或者270-360度的范围内。

    计算球体的角度,可以从球体的x,y方向的速度来取得。下面是主要代码:

    计算球体的角度:

    var angle:Number = Math.atan2(vy, vx);
    rotation = angle * 180 / Math.PI;

    判断运动方向并碰撞检测:

    if (obstruction1.hitTestObject(_ball)&&(_ball.rotation>90&&_ball.rotation<270))
     {
        _ball.reset(_ballInitX, _ballInitY);
     }

    延伸上面的条件,可以要求球体在某一个角度的区域内通过障碍物。

    除了从角度来限制球体的运动外还可以从球体的速度来考虑,例如当球体的速度大于5m/s时,可以通过障碍物,否则不能通过。

    计算球体的速度:

    v=Math.sqrt(_ball.vx*_ball.vx+_ball.vy*_ball.vy);

    当球体的速度小于5时不能通过障碍物,如下:

    if (obstruction1.hitTestObject(_ball)&&v<5)
     {
        _ball.reset(_ballInitX, _ballInitY);
     }

    作者:ywxgod
    E-mail:给我发邮件
    出处:http://ywxgod.cnblogs.com
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    spring mvc 获取请求中参数方式
    23种设计模式
    Liunx-Centos下安装FFmpeg
    liunx下nginx静态服务器配置SSL证书
    JDK 1.5新特性
    搭建kubenetes集群
    centos7添加虚拟IP
    Apache+tomcat配置动静分离(一个apache一个tomcat,没有做集群)
    maven使用内嵌tomcat7
    spring集成mybatis后,打印SQL语句
  • 原文地址:https://www.cnblogs.com/ywxgod/p/1788359.html
Copyright © 2011-2022 走看看