首页 新闻 搜索 专区 学院

winfrom中如何判断两个控件是否碰撞(小游戏)

0
悬赏园豆:5 [已解决问题] 解决于 2016-01-25 14:07

最近无聊打算做一款小游戏,但是游戏必然会涉及到物体碰撞的事件。起先想到的是通过坐标来判断物体间碰撞的发生,但是没能实现,只有当坐标重叠才会触发我写的方法,这不是我想要的。我希望的是能获取两个物体边缘发生接触方式。事件我是写在了keydown里面,每次按下指定键位都会进行物体之剑的判断。

自己思考了很久但是依然没有结果。我把控件想象成了一个长方体,用x坐标加上width得到控件的左上角和右上角的点,然后用y+height得到左下角和右下角的点。

对于坐标0,0和size为20,20的控件A。得到的四个点就是:0,0(左上角)、20,0(右上角)、0,20(左下角)、20,20(右下角)。

对于坐标0,0和size为10,10的控件B。得到的四个点就是:0,0(左上角)、10,0(右上角)、0,10(左下角)、10,10(右下角)。

我设想通过控件B的右侧边坐标在控件A的左侧边坐标范围内时就可以获得两个控件的碰撞了。但是技拙写不出来算法,求高人指点!

TylorChen的主页 TylorChen | 初学一级 | 园豆:104
提问于:2016-01-24 21:06
< >
分享
最佳答案
1

可以直接用Rectangle的IntersectsWith方法。

收获园豆:3
宁涛 | 菜鸟二级 |园豆:368 | 2016-01-25 09:28

这个好。

爱编程的大叔 | 园豆:30753 (高人七级) | 2016-01-25 10:27
其他回答(1)
0

1、首先这不是Winform的问题。

2、任何一种语言想做游戏,都要解决两个物体何时相交的问题。

3、你假设成为矩形,这是最简单的一种形式,这时候只需要判断两个矩形是否有相交即可。

4、既然你需要Winform的,那么我帮你找了一个C#的函数

收获园豆:2
爱编程的大叔 | 园豆:30753 (高人七级) | 2016-01-25 09:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册