采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
这集判断小鸟和铅笔碰撞的逻辑有问题吧,怎么看也不对,但是你运行起来确实对的。小鸟的top > 铅笔的bottom就判定失败,这个怎么想也不对啊。如果是小鸟撞到上铅笔的底部,那应该是小鸟的top < 铅笔的bottom。
判断一进来,默认为false的,最后返回的时候又取反了,if里面是小鸟没有撞到铅笔的判断,如果符合没撞到铅笔的判断,也为true,返回时取反,不满足外面的失败条件
check(){ const land=this.dataStore.get("land"); const birds=this.dataStore.get("birds"); if(birds.height+birds.y>=land.y){ this.isGameOver=true; } const pencilUp=this.dataStore.get("pencilUp"); const pencilDown=this.dataStore.get("pencilDown"); const birdBorder={ top:birds.y, bottom:birds.y+birds.height, left:birds.x, right:birds.x+birds.width }; this.dataStore.get("pencilDown").some(value=>{ if (birdBorder.bottom>=value.y && birdBorder.right>=value.x && birdBorder.left<value.x+value.width) { this.isGameOver = true; return true; } return false; }); this.dataStore.get("pencilUp").some(value=>{ if (birdBorder.top<value.height+value.y && birdBorder.right>value.x && birdBorder.left<value.x+value.width){ this.isGameOver=true; return true; } return false; }); }
感觉这么写比较靠谱,将上面的铅笔和下面的铅笔分开判断有没有碰撞。
还遗留一个问题:笔尖两边没碰到就会停止(由于将铅笔看成了一个长方形,实际是三角形加长方形)
你肯定光想了下半部分的铅笔,没有想上半部分的啊。你想啊,上半部分的铅笔是不是底部要是超过了小鸟的顶部,小鸟就“戳”上去了呀
老师,这里为什么不是并且的关系而是或者的关系呢?if条件里是小鸟没有撞到铅笔的条件吧,那为啥不是都满足才判定没撞到铅笔呢?
登录后可查看更多问答,登录/注册
官方同步,第一时间掌握整套微信小游戏开发核心技术
923 13
1.1k 12
2.6k 11
1.3k 8
1.1k 8