Collision detection

作者: Infinite_q | 来源:发表于2018-12-09 09:26 被阅读9次

    总的来说,思想很重要,不只是浅层次的,而是全面细致的。

    进入正题:

          一:首相想到谁跟谁碰撞: 1.man与enemy.    2.bullets与enemy.  当然man只有一个,bullets与enemy都是好多个,

            二:以什么形式碰撞:因为定义各个物体都是一个矩形的形状,所以是矩形块和矩形块之间的碰撞,那么问题来了,矩形块的属性是不是要获取?  获取属性的方法又是什么? (attention!!有坑)

              三: 获取属性的方法 : 在Enemy类种:

    public Rectangle getRect() {

    return new Rectangle((int)en_x, (int)en_y,60, 90);

    }

    这个方法要求是 int 型的,所以要强制转换一下,从而获取enemy的属性,有个坑:不要把width和height不赋值就直接带入,因为直接写上width和height时,没有值就相当于整型默认为0,也就造成了宽和高为0==这个矩形不存在,All efforts were in vain 不会看到想要的结果,因为.man与enemy和bullets都需要碰撞,所以这三个都需要获取得到矩形的属性

        四: 实现方法:敌人用动态数组创建

              for(int j = 0;j < ae.size();j++)  {    //画出所有敌人

      ae.get(j).draw(g);

    }

    /*

    * man与敌人之间的碰撞      遍历敌人

    */

      for(int j = 0;j < ae.size();j++) {

    if(ae.get(j).getRect().intersects(iM.getRect())) {

    }

    }

    然后在游戏界面判断一下。需要用到intersects() 方法  就是判断  敌人的矩形块与man的矩形块相交的话 ae.get(j).getRect().intersects(iM.getRect())  怎么样,子弹与敌人的碰撞类似,但由于子弹和敌人都不是一个,所以要用嵌套。

    相关文章

      网友评论

        本文标题:Collision detection

        本文链接:https://www.haomeiwen.com/subject/dljhhqtx.html