Finding the closest
Blitz3D Forums/Blitz3D Programming/Finding the closest
| ||
| ok I'm not completely sure how to explain tis buti'm gonna try... I am making a 3D pong game. I added powerups One of the powerups creates a new ball When there are to many balls the computer paddle can't figure out the right one to follow I want it to follow the closest one to it. How do i find the closest one of a bunch of types?(Or the biggest, fastest, slowest, farthest, etc....) |
| ||
| EntityDistance. I wouldn't just base the AI on distance, though. You'll probably wan't to consider the direction the ball is travelling, and it's velocity. |
| ||
| what do you mean EntityDistance? |
| ||
| It's the blitz3D command to find the distance between 2 entities. |
| ||
Or..Function Distance2D(x1#,y1#,x2#,y2#) Local dx#=x1-x2 Local dy#=y1-y2 Return Sqr(dx*dx + dy*dy) End Function |
| ||
| I know what the command does, i just don't get how i can use it to accomplish what explained |
| ||
| Use it to find the distance between the bat entity and the ball entity/entities? |
| ||
| Can you post some code for how you would do it, because i seriously have no clue. |
| ||
| targetball = null Distance = 100000 for ball = firstball to lastball if entitydistance(ball,bat)<Distance Distance = entitydistance(ball,bat) TargetBall = ball endif next |
| ||
| You should have a record of all your bats, using a type will do: (untested! :P) Type tBall Field entity End Type Then you'd create your bat & balls:
bat = LoadMesh("myBat.x")
Local ball.tBall
For i = 1 to 3
ball = New tBall
ball\entity = CreateShpere()
NextNow just call the function in your game, passing it the 'bat' entity
Function NearestBall(bat)
Local ball.tBall
Local nearestBall.tBall
Local nearestDist#
;Assume first tBall instance is the nearest
nearestBall = First tBall
nearestDistance = EntityDistance(bat,nearestBall\entity)
For ball = Each tBall
If ball <> nearestBall
dist = EntityDistance(bat,ball\entity)
If dist < nearestDist
nearestBall = ball
nearestDist = dist
End If
End If
Next
Return nearestBall\entity
End Function |