请稍等 ...
×

采纳答案成功!

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

我一个测试了六次,全部都是手工敲的代码

老师您好,实在没有办法,只能找你了,你看,我在做小鸟碰撞检测
if (leopardBorder.top > iceBorder.bottom) {
console.log(“撞到冰刺了”);
this.isGameOver = true;
return;
}
小游戏一运行就满足条件,没有办法继续啊,小鸟的宽130,高50,铅笔的宽30,高100像素
其他所有代码和你的一模一样,是不是你的小鸟比我的小,逻辑才能通过
图片描述

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

1回答

傅猿猿 2018-09-20 03:05:40

坐标系是左上角是原点,这个不是笛卡尔坐标系啊,也就是说,数字越小越往上,应该是大于小于号反了

0 回复 有任何疑惑可以回复我~
  • 提问者 JS龙游天下 #1
    老师,坐标系我知道,左上角为,0,0点坐标,可是,按照你的教程,小鸟的宽130,高50,一开始绘制在Y方向的中间,这个时候,绘制坐标就是259,而铅笔,宽30,高100,由于你的程序逻辑一开就要创建一对
    //要在游戏逻辑开始之前
            this.director.createIces();就是这个,这个默认Y值为0,因此,他的bottom就是Y+高100=100;
    所以,你判断碰撞的逻辑一开始就慢足,游戏就没有办法继续
    回复 有任何疑惑可以回复我~ 2018-09-20 12:44:39
  • 提问者 JS龙游天下 #2
    createIces() {
            //这个地方应该是控制top高度
            let cs = this.datastore.canvas;
            let minTop = cs.height / 8;
            let maxTop = cs.height / 2;
            let top = minTop + Math.random() * (maxTop - minTop);
    
            this.datastore.map.get('ices').push(new IceUp(top));
            this.datastore.map.get('ices').push(new IceDown(top));
        }
    如果一开始绘制不是Y=0,那还好说
    回复 有任何疑惑可以回复我~ 2018-09-20 12:47:03
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信