我在课堂上玩Slither时被抓了。我的惩罚是用小基础编写游戏。
我现在有一排球,如果第一个球滚过小圆点。点将消失,你将获得一个点。用于检查大球是否位于小点上的if语句是:
If (foodX[x] - SnakeHeadX) < precision And (foodX[x] - SnakeHeadX) > -precision And (foodY[x] - SnakeHeadY) < precision And (foodY[x] - SnakeHeadY) > -precision Then
此if语句位于for loop
For x = 1 To 500
所以我得到了我的分数但是当大球他的x值是和y值小于20时我也得到了分数。它本身并不意味着什么。
这就是场景(@是大球)
---------------------------------------------------------------------------------------------
|@ *
|
| *
| *
| * *
|
| *
---------------------------------------------------------------------------------------------
正如你所看到的那样,大球不会碰到小圆点。但我确实获得了积分。 为什么它是真的呢?我该如何解决?
答案 0 :(得分:1)
听起来你正试图管理命中箱。两个形状相互作用的地方。此外,您的方法似乎是计算两个对象之间的距离,如果它低于阈值保持(您的精确变量),则将其视为命中。
我有两点建议:
样品:
'Distance from centers
distance = Math.SquareRoot(Math.Power(foodX[x] - SnakeHeadX,2) + Math.Power(foodY[x] - SnakeHeadY),2)
If distance < precision Then
'feed the snake
EndIf
'Hit boxes
If SnakeHeadX > foodX[x] And SnakeHeadX < foodX[x] And SnakeHeadY > foodY[x] And SnakeHeadY < foodY[x] Then 'top left corner of snake
If 'top right coner of the snake
' Repeat for all four corners of the snake
EndIf
endif
如果这不能帮助澄清您的问题。您提供的详细信息和示例代码越多越好。