最近无聊打算做一款小游戏,但是游戏必然会涉及到物体碰撞的事件。起先想到的是通过坐标来判断物体间碰撞的发生,但是没能实现,只有当坐标重叠才会触发我写的方法,这不是我想要的。我希望的是能获取两个物体边缘发生接触方式。事件我是写在了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的左侧边坐标范围内时就可以获得两个控件的碰撞了。但是技拙写不出来算法,求高人指点!
可以直接用Rectangle的IntersectsWith方法。
这个好。
1、首先这不是Winform的问题。
2、任何一种语言想做游戏,都要解决两个物体何时相交的问题。
3、你假设成为矩形,这是最简单的一种形式,这时候只需要判断两个矩形是否有相交即可。
4、既然你需要Winform的,那么我帮你找了一个C#的函数