zoukankan      html  css  js  c++  java
  • 物理引擎demo (3) —— 碰撞检测


    demo地址:http://www.adanghome.com/js_demo/25/


    页面初始化的时候,只有黄色的小球可以拖动,圆是浅灰色,方块是深灰色。当黄色小球碰到其它物体时,会将他们变成蓝色的,而变成蓝色后,他们就可以被拖动了。黄色小球还可以去撞毁其他物体,当拖动黄色小球以较快的速度撞击其他物体时,会将他们给撞消失了。


    ===================================


    box2d提供的碰撞监听不好用,它是对world世界进行监听,然后在监听的回调函数里判断发生碰撞的两个物体是谁,然后进行处理。这种方式不太符合我们平时的编程习惯。我将box2d的碰撞监听封装了一下,在我的引擎中,可以直接对sprite进行碰撞监听,sprite支持beginContact、endContact、preSolve、postSolve事件,处理函数里传入了几个参数:有box2d原生提供的参数,也有sprite参数,直接得到发生碰撞的那个sprite。


    基于封装后的接口编程,编程体验会好很多倍。直接看代码吧,你看,关于黄色小球的逻辑,只有下面这么一段:


    myBall.on("postSolve",function(data){ 

        var sprite = data.sprite; 

        if(sprite instanceof Wall) return; 

        if(data.power > 600){ 

            sprite.remove(); 

        }else{ 

            sprite.setColor("blue");

            sprite.enableB2Drag();

        } 

    },this);


    世界是不是变得更美好了呢。

  • 相关阅读:
    jsp转向
    什么是 XDoclet?
    tomcat中的几点配置说明
    mysql5问题
    POJ 3734 Blocks
    POJ 2409 Let it Bead
    HDU 1171 Big Event in HDU
    POJ 3046 Ant Counting
    HDU 2082 找单词
    POJ 1286 Necklace of Beads
  • 原文地址:https://www.cnblogs.com/cly84920/p/4426478.html
Copyright © 2011-2022 走看看