isStrike() 为什么return !s 而不是s?逻辑怎么反了?既然这样为什么不直接初始化 s=true

来源:4-21 小游戏重新开始逻辑实现

Qub

2018-03-12

写回答

2回答

qq_许Y1世承诺_04041127

2018-03-22

//img.mukewang.com/szimg/5ab3c88200019b9503750665.jpg

这里初始化 s = false,如果不做检测直接 return !s,返回的就是 true 代表撞到铅笔了。

中间检测的代码是图中的区域,意思是当小鸟在这些区域的时候表示没有碰撞 赋值 s = true,return !s。返回的就是 false 了。

其实这是个反向逻辑,假设是碰撞的,然后看哪些情况是没有碰撞,如果符合条件就把 s = true,return 的就是 false,剩下的情况就是碰撞了,直接 return true;


其实这里的检测还有个 bug,就是小鸟可以一直在上面铅笔的上面一直飞,这个留给大家解决(很简单,参考地板碰撞检测)。

2
3
qq_冷月秋风_0
回复
新奥时代
因为任何一个条件不符合就表示撞了。而不是所有条件满足才撞。
2019-03-13
共3条回复

傅猿猿

2018-03-15

怎么写都可以呀,只要TRUE和FALSE的状态对就行了呀,当时边讲边敲就写了个有点绕的逻辑,精简也是OK的呀,真仔细,回头等我出院了也精简下代码

0
2
qq_冷月秋风_0
老师的讲解是正向的,代码其实是反向的,难怪我觉得怪怪的。
2019-03-13
共2条回复

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

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

3515 学习 · 664 问题

查看课程