2014-11-05 2 views
-1

Xcode 6.1에서 flappy bird 프로젝트의 코딩 오류가 발생했습니다.신속한 Flappy Bird Coding 오류

코드는 새의 회전을 허용하는 것입니다, 그리고 그것을 읽

bird.zRotation = self.acotarMinMax(-1, max: 0.3, valor: bird.physicsBody?.velocity.dy * (bird.physicsBody?.velocity.dy < 0 ? 0.003 : 0.001)) 

오류, 그것은 읽는 dy에서 발생 내가 오류를 수정하려면 어떻게

value of optional type 'CGFloat?' not unwrapped; did you mean to use '!' or '?'? 

, 또는이다 회전을 생성하는 다른 방법이 있습니까?

저는 Swift의 전체 초보자입니다. 따라서이 문제가 구문 문제인지 또는 업데이트 된 버전과 관련이 있는지 파악하는 데 어려움을 겪고 있습니다.

온라인 자습서에서 코드를 얻었으며 비디오에서 작동했습니다.

답변

0

는 스위프트 Optional 클래스에 최대 읽기 : https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html

은 그래서 dy이 중 하나에 값이하거나하지 않는 것을 의미하는 옵션 값 것 같다,하지만 들여다 때까지 몰라 그것 (슈뢰딩거의 고양이처럼). 따라서이 값이 필요하고 그 값이 nil이 아니라는 것을 알고 있다면 bird.physicsBody?.velocity.dy!을 작성하여 포장을 풀고 "상자"를 살펴보고 값을 가져 오지만 내부에 아무것도없는 경우 충돌이 발생합니다. dy?이라고 쓰면 상자가 보일 것입니다. 그러나 상자가 비어 있으면 무시합니다.

+0

안녕 세바스챤, 답장을 보내 주셔서 감사합니다! – Harry

+0

이것이 도움이된다면 투표에 자유롭게 투표하거나 정답으로 표시하십시오. :-) –

0

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/OptionalChaining.html 그래서 난 그냥 내 오류를 알아 냈 :

여기 (당신이 무엇 인) 옵션 체인에 더

.

세 바스 챤이 올바르게 지적했듯이 선택 체인이 있습니다.

일 코드는 :

bird.zRotation = self.acotarMinMax(-1, max: 1, valor: bird.physicsBody!.velocity.dy * (bird.physicsBody!.velocity.dy < 0 ? 0.002 : 0.002)) 

내가 사용하는 '!' 물리학에 대한 가치를 강요합니다. 이것이 왜 작동하는지에 대한 정확한 메커니즘은 여전히 ​​나에게는 희미합니다. 하지만 내 생각 엔 새 버전의 수정 방법을 사용하는 것입니다.