diff --git a/libstormgames.py b/libstormgames.py index dcdd3f6..51e251f 100755 --- a/libstormgames.py +++ b/libstormgames.py @@ -178,13 +178,15 @@ def obj_play(sounds, soundName, playerPos, objPos): # The sound is out of range, so do nothing. return None distance = playerPos - objPos - angle = math.radians(distance * 5) - left = math.sqrt(2)/2.0 * (math.cos(angle) + math.sin(angle)) - right = math.sqrt(2)/2.0 * (math.cos(angle) - math.sin(angle)) - if left < 0: - left *= -1 - if right < 0: - right *= -1 + if distance == 0: + left = 0.9 + right = 0.9 + else: + angle = math.radians(distance * 5) + left = math.sqrt(2)/2.0 * (math.cos(angle) + math.sin(angle)) + right = math.sqrt(2)/2.0 * (math.cos(angle) - math.sin(angle)) + if left < 0: left *= -1 + if right < 0: right *= -1 # x is the channel for the sound x = sounds[soundName].play(-1) # Apply the position information to the channel @@ -198,13 +200,15 @@ def obj_update(x, playerPos, objPos): obj_stop(x) return None distance = playerPos - objPos - angle = math.radians(distance * 5) - left = math.sqrt(2)/2.0 * (math.cos(angle) + math.sin(angle)) - right = math.sqrt(2)/2.0 * (math.cos(angle) - math.sin(angle)) - if left < 0: - left *= -1 - if right < 0: - right *= -1 + if distance == 0: + left = 0.9 + right = 0.9 + else: + angle = math.radians(distance * 5) + left = math.sqrt(2)/2.0 * (math.cos(angle) + math.sin(angle)) + right = math.sqrt(2)/2.0 * (math.cos(angle) - math.sin(angle)) + if left < 0: left *= -1 + if right < 0: right *= -1 # Apply the position information to the channel x.set_volume(left, right) # return the channel