微信官方飞机大战中,炮弹击中飞机的逻辑怎么实现?

如下图所示,微信官方飞机大战中界面,我想在思考,一发炮弹是怎么击中目标的,请大家开放讨论

图片描述

阅读 2.4k
2 个回答

碰撞检测,简单说就是两者是否有交叉区域

我想应该类似这个逻辑,简单的说,战机,炮弹,随机生成,碰撞检测,另外还有一个就是敌机和我方飞机相撞的检测

 while(1)
    {
        system("cls");
        time_t currenttime;
        currenttime = time(NULL);
        //每隔一秒生成一架敌机
        if (currenttime - starttime - subtime > 0)
        {
            srand((unsigned)time(NULL));
            unsigned int target_y = rand() % 14 + 3;
            target = generate_target(target, target_y);
        }
        subtime = currenttime - starttime;
        //开火则生成子弹
        if (isfire)
        {
            bullet = generate_bullet(bullet, plane_x, plane_y - 1);
            isfire = 0;
        }
        //打印敌机
        print_target(target);
        targetspeed++;
        if(targetspeed % 2 == 0)
            target = update_target(target);
        //打印子弹
        print_bullet(bullet);
        bulletspeed++;
        if (bulletspeed % 2 == 0)
            bullet = update_bullet(bullet);
        //碰撞检测
        grade = grade + collision_detection(bullet, target);
        gotoxy(0, 25);
        printf("SCORE: %d", grade);
        //打印飞机
        print_plane(plane_x, plane_y);
        //敌机本机是否相撞
        bool isgameover = is_gameover(plane_x, plane_y, target);
        //Sleep(100);
        //非阻塞键盘输入

已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题