vb.net中的椭圆碰撞?

vb.net中的椭圆碰撞?,vb.net,ellipse,collision,Vb.net,Ellipse,Collision,我在比赛中遇到了一些问题 事实上,我必须检测椭圆碰撞 我更喜欢vb.net语言的代码,因为我不能理解其他任何代码 想法或代码有什么帮助吗?您只需检查与区域对象和区域的冲突。相交方法: Dim gp1 As New Drawing2D.GraphicsPath() gp1.AddEllipse(rect1) Dim gp2 As New Drawing2D.GraphicsPath() gp2.AddEllipse(rect2) Dim reg1 As New Region(gp1) Dim

我在比赛中遇到了一些问题 事实上,我必须检测椭圆碰撞 我更喜欢vb.net语言的代码,因为我不能理解其他任何代码
想法或代码有什么帮助吗?

您只需检查与
区域
对象和
区域的冲突。相交
方法:

Dim gp1 As New Drawing2D.GraphicsPath()
gp1.AddEllipse(rect1)

Dim gp2 As New Drawing2D.GraphicsPath()
gp2.AddEllipse(rect2)

Dim reg1 As New Region(gp1)
Dim reg2 As New Region(gp2)

reg1.Intersect(reg2)

If reg1.GetRegionScans(New Drawing2D.Matrix(1, 1, 0, 1, 1, 0)).Length > 0 Then
    MessageBox.Show("Collision!")
End If
在本例中,
rect1
rect2
是定义(包含)椭圆的
矩形,如使用矩形绘制椭圆时:

Dim rect1 As New Rectangle(5, 5, 150, 100)
Me.CreateGraphics.DrawEllipse(Pens.Blue, rect1)

编辑:

对于性能和选项,您最好使用游戏引擎。检查以下链接:

  • 与每一个和链接的信息
  • 名单

谢谢你的朋友,但这太慢了,我不能在我的游戏中使用它,5次只能使fps小于50!!!我需要至少100次碰撞检测,事实上,它的效率还不足以用于游戏编程,我不认为有比这更有效的方法。你可以自己做数学来检查碰撞,这将提高性能。只需在谷歌上搜索“椭圆碰撞”。其他快速选项可能是检查矩形与
rect1的冲突。与(rect2)
相交,但它将检查所有矩形区域,而不仅仅是椭圆区域。如果您想要性能,您应该使用适当的游戏引擎,而不使用此引擎,因为这对于游戏开发来说是不优化的。在这里别忘了做这项工作的好方法。在一个好的引擎中,你将拥有所有需要高效检查的东西。事实上,你的建议是正确的(使用游戏引擎),但是我在VB.NET中找不到一个2D游戏的好引擎,所以我决定我自己做一个,希望我能做到这一点:)谢谢你的帮助:“KhalidEasa考虑它是否帮助你。”