用VB写坦克大战 子弹命中物体 该怎么写呢?如何实现触发效率高?

来源:百度知道 编辑:UC知道 时间:2024/06/08 11:58:46

假设坦克是方形,有4个数性Left Right Top Bottom
子弹是点的情况很简单只要判断点是否在坦克方形内部就可以了
子弹.x > 坦克.left and 子弹.x < 坦克.right
子弹.y同理

例如子弹是圆,圆心(x,y),半径r
只要判断圆心和坦克中心连线交于圆上的点是否在坦克内部
设交点tx,ty
坦克中心cx,cy
用极坐标好算一些,tx=x+rcos(夹角),ty=y+rsin(夹角)

给你个算幅角的函数
Function arg(ByVal x As Double, ByVal y As Double)
If x = 0 Then
If y = 0 Then arg = 0: Exit Function
If y > 0 Then arg = pi / 2: Exit Function
arg = 3 * pi / 2: Exit Function
ElseIf x > 0 Then
If y > 0 Then arg = Atn(y / x): Exit Function
If y = 0 Then arg = 0: Exit Function
arg = 2 * pi - Atn(-y / x): Exit Function
Else
If y > 0 Then arg = pi - Atn(-y / x): Exit Function
If y = 0 Then arg = pi: Exit Function
arg = pi + Atn(y / x)

End If
End Function

上面的例子中夹角=arg(cx-x,cy-y)

对象的边界属性(object.Scale)属性编写