2016-12-15 3 views
2

내 캐릭터가 땅에 닿을 때 소리를내는 데이 기능을 많이 설정했습니다.캐릭터가 땅바닥에서 튀어 오를 때 소리가 두 번 나옵니까?

func playSound() { 

    let url = Bundle.main.url(forResource: "Sound", withExtension: "caf")! 

    do { 
     Sound = try AVAudioPlayer(contentsOf: url) 
     guard let Sound = Sound else { return } 

     Sound.prepareToPlay() 
     Sound.play() 
    } catch let error { 
     print(error.localizedDescription) 
    } 
} 

은 1 문제를 제외하고 잘 작동 - 나의 영웅은 땅에 떨어지고 /이 충돌을 만드는 두 번 소리를 재생하는 땅에서 반사된다.

어떻게 수정하겠습니까?

또한 Swift에서 사운드의 볼륨을 조정할 수 있습니까? 아니면 외부에서 수행해야합니까? 어떤 도움을 크게 감사합니다 :)

FUNC를 꺼내,()가 아래라고

if firstBody.categoryBitMask == physicsCategory.bird && secondBody.categoryBitMask == physicsCategory.ground || firstBody.categoryBitMask == physicsCategory.ground && secondBody.categoryBitMask == physicsCategory.bird{ 


     playSound() 


     enumerateChildNodes(withName: "wallPair", using: ({ 
      (node, error) in 

      node.speed = 0 
      self.removeAllActions() 
     })) 

     enumerateChildNodes(withName: "birdFly", using: ({ 
      (node, error) in 

      node.speed = 0 
      self.removeAllActions() 


     })) 


     if died == false{ 
      died = true 
      createButton() 
      loseALife() 


     } 

답변

1
난 당신의 코드 (꺼내,()가 호출되는 FUNC)를 참조해야 할 것이다, 그러나 당신이 꺼내, 포장 할 수

fall의 translation.y가 특정 숫자보다 큰 경우에만 성공하는 if 문에서().

사운드 볼륨의 경우 AVAudioPlayer의 볼륨 속성 (부동 소수점)을 0.0에서 1.0 사이의 숫자로 설정할 수 있습니다.

func playSound(with volumeForFall: CGFloat) { 
    let url = Bundle.main.url(forResource: "Sound", withExtension: "caf")! 

    do { 
     Sound = try AVAudioPlayer(contentsOf: url) 
     guard let Sound = Sound else { return } 

     Sound.volume = volumeForFall 

     Sound.prepareToPlay() 
     Sound.play() 
    } catch let error { 
     print(error.localizedDescription) 
    } 
} 

를 그리고, 당신은 translation.y에 액세스 할 수있는합니다 (Y 거리가 가을에 통과) 것을 호출하고 그에 따라 볼륨을 설정 : 당신은 당신 꺼내,() FUNC에에 전달할 수 있습니다.

+0

나를 올바른 방향으로 보내 주셔서 감사합니다! 내가 생각하는 볼륨은 업데이트 된 버전의 신속성으로 인해 변경되었습니다. playSound() 함수가 호출 된 직후 flap? .volume = 0.1이 추가되었습니다. 내 코드의 나머지 부분이 내 플레이어가 사망하여 바닥에 떨어진 곳에 추가했습니다. 당신의 도움을 주셔서 감사합니다! – niX

관련 문제