collision help...

Dubbsta

Active Member
Joined
Jul 13, 2017
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
Joined
Jul 31, 2017
Location
Bern, Switzerland
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
Joined
Jul 13, 2017
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
Joined
Nov 14, 2017
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
 
Top Bottom