I'm trying to add in some sound on my little project... and my ears start bleeding because its playing the sound every loop!
Why does the code below print "Hello" every loop it seems? The actions inside the collision IF statement should only occur when the balls collide:
The balls rarely collide, most of the time they just bounce off the walls (the wall sound works correctly)
Why does the code below print "Hello" every loop it seems? The actions inside the collision IF statement should only occur when the balls collide:
Method Update() 'update positions point.x:+Vec.x point.y:+Vec.y If point.x<radius Then point.x=radius vec.x:*-1.0 PlaySound sfxballwall End If If point.x>GraphicsWidth()-radius Then point.x=GraphicsWidth()-radius vec.x:*-1.0 PlaySound sfxballwall End If If point.y<radius Then point.y=radius vec.y:*-1.0 PlaySound sfxballwall End If If point.y>GraphicsHeight()-radius Then point.y=GraphicsHeight()-radius vec.y:*-1.0 PlaySound sfxballwall End If For Local ball2:Enemyball = EachIn BallList Local collisionDistance# = 20 Local actualDistance# = Sqr((ball2.point.x-point.x)^2+(ball2.point.y-point.y)^2) If actualDistance<collisionDistance Local collNormalAngle#=ATan2(ball2.point.y-point.y, ball2.point.x-point.x) Local moveDist1#=(collisionDistance-actualDistance)*(ball2.mass/Float((mass+ball2.mass))) Local moveDist2#=(collisionDistance-actualDistance)*(mass/Float((ball2.mass+mass))) point.x=point.x + moveDist1*Cos(collNormalAngle+180) point.y=point.y + moveDist1*Sin(collNormalAngle+180) ball2.point.x=ball2.point.x + moveDist2*Cos(collNormalAngle) ball2.point.y=ball2.point.y + moveDist2*Sin(collNormalAngle) Local n:TVec2 = New TVec2.Init(Cos(collNormalAngle),Sin(collNormalAngle)) Local a1# = vec.DotProduct(n) Local a2# = ball2.vec.DotProduct(n) Local optimisedP# = (2.0 * (a1-a2)) / (mass + ball2.mass) vec.x:- (optimisedP*ball2.mass*n.x) vec.y:- (optimisedP*ball2.mass*n.y) ball2.vec.x:+ (optimisedP*mass*n.x) ball2.vec.y:+ (optimisedP*mass*n.y) 'Why is this being printed every loop it seems? Print "Hello" End If Next If Sqr((PlayerX-point.x)^2+(PlayerY-point.y)^2) < 20 SetColor 0,0,0 DrawText "GAME OVER",0,0 SetColor 255,255,255 End If End Method
The balls rarely collide, most of the time they just bounce off the walls (the wall sound works correctly)