请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

这集判断小鸟和铅笔碰撞的逻辑有问题吧,怎么看也不对,但是你运行起来确实对的。小鸟的top > 铅笔的bottom就判定失败,这个怎么想也不对啊。

这集判断小鸟和铅笔碰撞的逻辑有问题吧,怎么看也不对,但是你运行起来确实对的。小鸟的top > 铅笔的bottom就判定失败,这个怎么想也不对啊。如果是小鸟撞到上铅笔的底部,那应该是小鸟的top < 铅笔的bottom。

正在回答 回答被采纳积分+3

3回答

新奥时代 2018-08-25 02:54:39

判断一进来,默认为false的,最后返回的时候又取反了,if里面是小鸟没有撞到铅笔的判断,如果符合没撞到铅笔的判断,也为true,返回时取反,不满足外面的失败条件

1 回复 有任何疑惑可以回复我~
ChangeH 2020-11-02 19:59:37
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;
});
}

感觉这么写比较靠谱,将上面的铅笔和下面的铅笔分开判断有没有碰撞。

还遗留一个问题:笔尖两边没碰到就会停止(由于将铅笔看成了一个长方形,实际是三角形加长方形)

0 回复 有任何疑惑可以回复我~
傅猿猿 2018-08-24 23:51:55

你肯定光想了下半部分的铅笔,没有想上半部分的啊。你想啊,上半部分的铅笔是不是底部要是超过了小鸟的顶部,小鸟就“戳”上去了呀

0 回复 有任何疑惑可以回复我~
  • 老师,这里为什么不是并且的关系而是或者的关系呢?if条件里是小鸟没有撞到铅笔的条件吧,那为啥不是都满足才判定没撞到铅笔呢?
    回复 有任何疑惑可以回复我~ 2018-08-25 15:40:17
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信