游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1951|回复: 0

请教IntersectRect()问题。

[复制链接]

2

主题

6

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2004-3-6 16:30:00 | 显示全部楼层 |阅读模式
IntersectRect()
我在碰撞检测中使用了这个函数,

一共用了两次,一次是子弹对敌机的检测,一次是战机对敌机的碰撞检测。
结果是子弹对敌机的检测成功,战机对敌机的碰撞检测失败。
但是有一个问题就是当战机对敌机发生重叠时发射子弹,战机对敌机的碰撞检测就会发生。同时在战机对下一个敌机的碰撞检测有很大的概率是成功的。

很糊涂,现在附上检测部份的代码,请高手指教。
谢谢!
//处理游戏逻辑
void ::ProcessGameLogic(void)
{
        int i=0;
        RECT R_bullet,R_Fly,R_FlyA;
    RECT rcTmp,rcTmp1;
        do{
                if(BulletNum[i] == 1)
                {
                        R_bullet.left        = ::bullet1[i].x_Bullet_Place;
                        R_bullet.top        = ::bullet1[i].y_Bullet_Place;
                        R_bullet.right        = ::bullet1[i].x_Bullet_Place+ 39;
                        R_bullet.bottom        = ::bullet1[i].y_Bullet_Place+ 49;
                        R_Fly.left                = ::Fly_B[0].x_Fighter_Place;
                        R_Fly.top                = ::Fly_B[0].y_Fighter_Place;
                        R_Fly.right                = ::Fly_B[0].x_Fighter_Place + 35;
                        R_Fly.bottom        = ::Fly_B[0].y_Fighter_Place + 35;
                        if(IntersectRect(&rcTmp,&R_Fly,&R_bullet))
                        {
                                ::Fly_B[0].CampMap = 2;
                                BulletNum[i] = 0;

                        }
                }
                i++;
        }while(i <= BulletMaxNum && Fly_B[0].CampMap == 0);

        R_FlyA.left                = ::Fly_A.x_Fighter_Place;
        R_FlyA.top                = ::Fly_A.y_Fighter_Place;
        R_FlyA.right        = ::Fly_A.x_Fighter_Place + 50;
        R_FlyA.bottom        = ::Fly_A.y_Fighter_Place + 60;

        if( Fly_B[0].CampMap == 0)
        {
                if(IntersectRect(&rcTmp1,&R_Fly,&R_FlyA))
                {
                        ::Fly_B[0].CampMap = 2;
                        ::Fly_A.x_Fighter_Place = 40;
                        ::Fly_A.y_Fighter_Place = 300;

                }

        }


}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-25 16:18

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表