Android游戏开发学习①弹跳小球实现方法

2019-12-10 20:00:03于海丽
  • //此处先省略检测和处理特殊事件的代码,随后补全   } else if (father.x + father.r / 2 >= BallView.WOOD_EDGE) {// 通过X坐标判断球是否移出了挡板  
  • father.timeY = System.nanoTime();   father.bFall = true; // 确定下落  
  • }   try {  
  • Thread.sleep(sleepSpan);   } catch (Exception e) {  
  • e.printStackTrace();   }  
  • }   }  
  • 代表重力加速度的变量g初始化为200,此值是经过测试得出的较为合理的值。

    run方法处理小球在水平方向的运动时,先根据当前时间获得本阶段中从开始到现在小球在水平方向上运动的时间,然后用该阶段中到目前为止小球的位移加上小球在该阶段的初始位置,求出小球此时的X坐标。

    run方法处理小球在竖直方向的运动时,先检查小球的bFall是否为true,如果为true表明小球已经可以下落,进行物理计算;如果为false则使用X坐标进行判断是否需要将其设置为true。

    使用到的BallView类的常量WOOD_EDGE记录着木板图片的最右边的X坐标值,如果小球的水平位置超过该值就需要下落了。

    刚才省略的检测代码如下:

     

     
    1. // 判断小球是否到达最高点   if (father.startVY < 0 && Math.abs(father.v_y) <= BallView.UP_ZERO) {  
    2. father.timeY = System.nanoTime();   father.v_y = 0;  
    3. father.startVY = 0;   father.startY = father.y;  
    4. }   // 判断小球是否撞地