質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

707閲覧

xcodeでブロック崩しを作る際に発生するエラーについて(swiftのヴァージョン違いから生じている?)

ai_123

総合スコア25

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/07/30 13:27

練習のつもりでitunesでデベロッパー登録してxcodeのswiftでブロック崩しを制作しています。

開発環境
macbookpro
Xcode Version 11.0 beta 4
Swift version 5.1

参考サイト
ここ

GameScene.swiftに以下のコードを書き込みました。

swift

1import SpriteKit 2import GameplayKit 3class GameScene: SKScene , SKPhysicsContactDelegate { 4 var entities = [GKEntity]() 5 var graphs = [String : GKGraph]() 6 var ball:SKSpriteNode! 7 var paddle:SKSpriteNode! 8 override func didMove(to view: SKView) { 9 //withname にはGameScene.sksで作成した名前 10 ball = self.childNode(withName: "ball") as? SKSpriteNode 11 paddle = self.childNode(withName: "paddle") as? SKSpriteNode 12 //ボールの飛ぶ方向 13 ball.physicsBody?.applyImpulse(CGVector(dx: 5, dy: 5)) 14 //ボールが壁にぶつかった時に跳ねかえる 15 let border = SKPhysicsBody(edgeLoopFrom: (view.scene?.frame)!) 16 border.friction = 0 17 self.physicsBody = border 18 //SKPhysicsContactDelegate をクラス参照に入れてないとエラーとなる 19 self.physicsWorld.contactDelegate = self 20 } 21 //パドル 22 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 23 for touch in touches** 24 { 25 let toucLocation = touch.location(in: self) 26 paddle.position.x = toucLocation.x 27 } 28 } 29 override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) { 30 for touch in touches 31 { 32 let toucLocation = touch.location(in: self) 33 paddle.position.x = toucLocation.x 34 } 35 } 36 //ブロックがボールに当たると消える。 37 func didBegin(_ contact : SKPhysicsContact) 38 { 39 let bodyAName = contact.bodyA.node?.name; 40 let bodyBName = contact.bodyB.node?.name; 41 if bodyAName == "ball" && bodyBName == "brick" || 42 bodyAName == "brick" && bodyBName == "ball" 43 { 44 if bodyAName == "brick" 45 { 46 contact.bodyA.node?.removeFromParent() 47 } 48 else if bodyBName == "brick" 49 { 50 contact.bodyB.node?.removeFromParent() 51 } 52 } 53} 54} 55

するとパドルの2箇所にエラーが表示されます。

error1

1 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {

【error message】

  • Method does not override any method from its superclass
  • Use of undeclared type 'UIEvent'
  • Use of undeclared type 'UITouch'

error2

1override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {

【error message】

  • Method does not override any method from its superclass
  • Use of undeclared type 'UIEvent'
  • Use of undeclared type 'UITouch'

参考サイトで制作した時とSwiftのバージョンが異なることから定義の仕方が異なるかと思うのですが、現バージョンでの表記の仕方が分かりません。

ご教授いただけないでしょうか。宜しくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2019/07/30 23:51

もしかしてmacOSのプロジェクト作ってませんか?
ai_123

2019/08/01 23:54

確認したらそうでした汗 Iphone8など他のデバイスが出てこないんですが、どうしたらいいですか?全然分かりません。
fuzzball

2019/08/02 00:09

iOSかmacOSかを決めるのはプロジェクトを作成するときです。プロジェクトを作り直して下さい。
ai_123

2019/11/16 09:02

返信遅れてすいません。 プロジェクトを作り直す必要があったのには気づきませんでした。 ありがとうございます。
guest

回答1

0

自己解決

macOSでプロジェクトを作っていたことが原因でした。
プロジェクトを作り直すことで、初期設定でiOSを選択することが出来、問題が解決しました。
fuzzballさん、ありがとうございました。

投稿2019/11/16 09:04

編集2019/11/16 09:08
ai_123

総合スコア25

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問