# collision help...

#### Dubbsta

##### Active Member
i did object pool for this. when collision happens score and sound go crazy and wont stop, if i do a
hit = true and hit = false outside of this block sound wont play and no scrore??? can someone tell me what im doing wrong
Code:
``````For Local i:Bullets = eachin bulletList

i.fy -= i.bspeed * dt.delta

If i.fx > bx - 45 and i.fx < bx + 45 and i.fy > by + 10 and i.fy < by + 70 Or i.fx > bx - 23 and i.fx < bx +23 and i.fy > by +70 and i.fy - 8< by + 90 Or i.fy <0

i.visible = False

score += 10

Benergy -= 1

PlaySound(hitsnd,1,0)

End

Next``````

#### Holzchopf

##### Moderator
Staff member
Put that freakishly long If-statement in another, that first checks if i.visible is true (or "Not False" but let's assume you're using i.visible as a bool which is either true or false) and therefore will only pass once

Like
Code:
``````If i.visible = True Then

<the other if block here>

End``````

#### Dubbsta

##### Active Member
Put that freakishly long If-statement in another, that first checks if i.visible is true (or "Not False" but let's assume you're using i.visible as a bool which is either true or false) and therefore will only pass once
hahaha k thanks will try

edit: works!!!

Last edited:

#### Goodlookinguy

##### New Member
3rd Party Module Dev
I think this reads better than stacking if-statements

Code:
``````For Local i:Bullets = EachIn bulletList
If Not i.visible Then Continue

i.fy -= i.bspeed * dt.delta

If i.fx > bx - 45 And i.fx < bx + 45 And
i.fy > by + 10 And i.fy < by + 70 Or
i.fx > bx - 23 And i.fx < bx + 23 And
i.fy > by + 70 And (i.fy - 8) < (by + 90) Or
i.fy < 0

score += 10
Benergy -= 10
PlaySound(hitsnd, 1, 0)

End

Next``````

#### Dubbsta

##### Active Member
much better, i like!