问答详情
源自:2-9 大鱼和果实的碰撞检测

我想知道为什么我momFruitsCollision()中的fruit.dead(i)执行了 this.alive[i】也变成了false 为什么果实不消失

我想知道为什么我momFruitsCollision()中的fruit.dead(i)执行了   this.alive[i】也变成了false  为什么果实不消失

提问者:丨木丶小子丨3472992 2017-04-14 14:32

个回答

  • qq_胡子大叔_2
    2018-11-27 11:52:29

    我的问题是这样解决的 代码无误 无bug报告

    即使刷新多次谷歌浏览器 不会被吃掉

    重新启动浏览器 或者 重新从编译工具启动测试游戏页面就可以被吃掉了

    为什么会这样的原因我总结了以下几点

    1. 我这个测试的谷歌浏览器或者版本不支持 实时更新我们这段 触碰 函数

    2. 触碰 函数 都不支持各种浏览器 实时更新……

      希望有大神指导一下 正确原因。

  • qq_渭水空藏月_0
    2018-05-18 16:16:11

    代码都和你说的这些一样    为什么还是不对啊


  • 慕粉4334522
    2017-06-20 22:37:16

    可能原因如下:

    (1)在fruit.js中dead函数写的不对,未传参数进去。

    正确写法如下:

    fruitObj.prototype.dead = function(i) {
     this.alive[i] = false;
    }

    (2)在fruit.js中的init()初始化过程中,果实的初始状态不对,最开始应该是false状态

    fruitObj.prototype.init = function() {
     for(var i=0; i<this.num; i++) {
      this.alive[i] = false;

    }

    (3)momFruitCollision()函数没有在main.js中进行调用。调用位置在gameloop()函数中。

    先仔细检查下看是哪里的问题哦。

  • 丨木丶小子丨3472992
    2017-04-14 14:33:15

    function momFruitsCollision (){

    for (var i = 0; i < fruit.num; i++) {

    if(fruit.alive[i]){

    //calculate lenght

    var l = calLength2(fruit.x[i],fruit.y[i],mom.x,mom.y);

    if ( l < 900){

    fruit.dead(i)

    }


    }

    }

    }