游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2776|回复: 2

请教一个简单的碰撞问题

[复制链接]

1

主题

1

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2003-12-5 00:08:00 | 显示全部楼层 |阅读模式
小弟初学游戏设计,遇到一个碰撞算法问题:
一个小球(10×10图像),一个矩形物体(64×32图像),小球可能从矩形物体的上下左右与其发生碰撞,分别碰撞矩形物体的上下左右各边,碰撞不同的边,会发生不同的操作,我如何检测到,小球是否与物体碰撞,并确定是与矩形物体的那条边碰撞?谢谢各位前辈给个思路,最好用JAVA或C++语言描述 [em4]

15

主题

73

帖子

81

积分

注册会员

Rank: 2

积分
81
发表于 2003-12-5 10:24:00 | 显示全部楼层

Re:请教一个简单的碰撞问题

你可以先算出小球的半径(或自己规的小球的半径)这样你就可以不用小球的图像大小来判断是否与矩形物体来判断了,而是用小球的半径加当前小球图片的中心位置来判断是否会与矩形判断.
例如小球的数据结构是:
class xiaoqiu
{
public:
float   banjin;        //小球的半径
float   x;                //小球的中心位置X坐标
float  y;               //小球的中心位置y坐标

};
至于确定多边形的边也可以用定义结构的方式定义...

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20468
发表于 2003-12-5 10:38:00 | 显示全部楼层

Re:请教一个简单的碰撞问题

小球的坐标: x1,y1   小球的实际范围: x1+10, y1+10
矩形的坐标: x2,y2   矩形的实际范围: x2+64, y2+32

int success = 0;
// 左边界
if( (x1+10) > x2 && (x1+10) < (x2+64)
{
    success = 1;
}
// 右边界
if( x1 < (x2+64) && x1 > x2 )
{
    success = 1;
}

// 上边界
if( (y1+10) > y2 && (y1+10) < (y2+32) )
{
    success++;
}
// 下边界
else if( y1 < (y2+32) && y1 > y2 )
{
    success++;
}

if( success == 2 )
{
    // 成立
}


刚睡醒,头昏脑胀,不知道这段程式码是否成立,仅供参考!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-2-24 14:26

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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