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

来源:4-20 小游戏小鸟碰撞铅笔逻辑实现

慕设计1589814

2018-08-24

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

写回答

3回答

新奥时代

2018-08-25

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

1
0

ChangeH

2020-11-02

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
0

傅猿猿

2018-08-24

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

0
1
新奥时代
老师,这里为什么不是并且的关系而是或者的关系呢?if条件里是小鸟没有撞到铅笔的条件吧,那为啥不是都满足才判定没撞到铅笔呢?
2018-08-25
共1条回复

微信小游戏入门与实战,一天之内搞定微信小游戏开发

官方同步,第一时间掌握整套微信小游戏开发核心技术

3515 学习 · 664 问题

查看课程