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

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

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

SpriteKitは、iOSやOS Xで使用できるApple社製の2Dゲーム開発フレームワークです。

Xcode

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

Swift

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Q&A

解決済

3回答

1600閲覧

Spritekitでのエラー「PhysicsBody: Could not create physics body.」について

退会済みユーザー

退会済みユーザー

総合スコア0

SpriteKit

SpriteKitは、iOSやOS Xで使用できるApple社製の2Dゲーム開発フレームワークです。

Xcode

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

Swift

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

0グッド

0クリップ

投稿2020/07/13 10:30

swiftの勉強をしています。
学習環境は、XcodeのVersion 11.3.1 (11C504)です。
シミュレーションはiPhone11 Pro MaxとiPhone8を使用しています。

spritekitを使用し、画像を画面上に表示し、画面下部に移動するアプリを作成しています。

「SKPhysicsBody(texture: SKTexture, size: CGSize」を使用すると『PhysicsBody: Could not create physics body.』エラーが出てしまい、画像が物理シミュレーションの影響を受けなくなってしまいます。

「SKPhysicsBody(circleOfRadius: CGFloat」や「SKPhysicsBody(rectangleOf: CGSize」では上記エラーは発生せず、画像が画面下部へと移動する状況です。

「SKPhysicsBody(texture: SKTexture, size: CGSize」を用いて、test.pngを元にボディを作成していきたいです。

エラー解決方法をご教授頂ければと思います。
よろしくお願い致します。

以下が問題のエラーが出るコードです。

import Foundation
import SpriteKit

class GameScene : SKScene{
override func didMove(to view: SKView) {

self.physicsWorld.gravity = CGVector(dx: 0.0,dy: -1.0) self.fallTest() } func fallTest(){ let texture = SKTexture(imageNamed: "test") let sprite = SKSpriteNode(texture: texture) sprite.position = CGPoint(x: self.size.width*0.5,y: self.size.height*0.5) sprite.size = CGSize(width: texture.size().width*0.5,height: texture.size().height*0.5) //sprite.physicsBody = SKPhysicsBody(texture: sprite.texture!,size: sprite.size) //sprite.physicsBody = SKPhysicsBody((circleOfRadius: 15)) //sprite.physicsBody = SKPhysicsBody(rectangleOf: texture.size()) //sprite.physicsBody = SKPhysicsBody(rectangleOf: sprite.size) sprite.physicsBody = SKPhysicsBody(texture: texture, size: sprite.size) self.addChild(sprite) }

}

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

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

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

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

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

fuzzball

2020/07/15 01:10

他の画像ではどうでしょうか? let texture = SKTexture(imageNamed: "") にするとどうなりますか?
fuzzball

2020/07/17 02:51

スルーしてるのならいいんですけど、見落としならよろしくお願いします。
退会済みユーザー

退会済みユーザー

2020/07/19 12:38

回答ありがとうございます。 すみません。こちらにもコメント頂ける機能があるのを知らなかったです。 他の画像でも同様です。 また、拡張子を変更しても変化なしです。 ご提案頂いた方法を試してみたいと思います。
退会済みユーザー

退会済みユーザー

2020/07/19 14:44

let texture = SKTexture(imageNamed: "") で実行するとPhysicsBody: Could not create physics body.エラーは変化なしで、表示される画像が赤いバツ印に変化します。
fuzzball

2020/07/20 04:40

SKTexture(imageNamed: "")の状態で、 ・○ 9.2.1(実機) ・○ 10.3(シミュレータ) ・○ 12.4.1(実機) ・× 13.5(シミュレータ) 以上のようになりました。 fuguさんの回答のように、OS(もしくはSimulator)の不具合ではないかと思います。
退会済みユーザー

退会済みユーザー

2020/07/20 13:51

お返事ありがとうございます。 シュミレーターと実機を試してみようと思います。
guest

回答3

0

import SpriteKit class GameScene : SKScene{ override func didMove(to view: SKView) { self.physicsWorld.gravity = CGVector(dx: 0.0,dy: -1.0) self.fallTest() } func fallTest(){ let sprite = SKSpriteNode(imageNamed: "test") sprite.position = CGPoint(x: self.size.width*0.5,y: self.size.height*0.5) sprite.size = CGSize(width: (sprite.texture?.size().width)!*0.5,height: (sprite.texture?.size().height)!*0.5) sprite.physicsBody = SKPhysicsBody(texture: sprite.texture!, size: sprite.size) self.addChild(sprite) } }

検索すると
https://translate.google.co.jp/translate?hl=ja&sl=en&u=https://developer.apple.com/forums/thread/123940&prev=search&pto=aue
バグのようですが、こうやってもダメでしょうか?

シュミレータ Apple TV 4K(at 1080p)で同じ現象を確認できました。
実機ではこの現象は確認できませんでした。
実機を使ってテストしてください。

投稿2020/07/14 02:01

編集2020/07/30 14:40
fugu

総合スコア35

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

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

退会済みユーザー

退会済みユーザー

2020/07/14 21:29

回答ありがとうございます。 sprite.physicsBody = SKPhysicsBody(texture: sprite.texture!, size: sprite.size) 上記を試してみましたが、エラーは変わらない様でした。 私の環境は、xcodeは11.3、OSは10.15.5なのでリンクの通りだと、エラーにならないハズなのですが、改善しない状況です。 実行環境等で、エラー発生に違いが出てくるのでしょうか?
fugu

2020/07/14 23:34

シュミレーターのIOSのバーションはいくつですか?
退会済みユーザー

退会済みユーザー

2020/07/15 22:43

お返事ありがとうございます。 バグの可能性もあると言うことで、11.4と最新の11.5のシミュレーターの両方で動作確認をしていますが、変化ありません。
fugu

2020/07/15 23:38 編集

Xcodeのバージョンではなく。 実行環境のIOSのバーションはいくつですか? 最近、同じ質問をよく見ます。こちらも同じ内容だとおもいます。 https://teratail.com/questions/268994 私は、mac-miniを使ってるのですが、 XcodeVersion 11.4,Version 11.5 で試しましたが、 再現できませんでした。 ネットでは、MacBookの方の報告を見かけたので その辺りの問題かもしれません。 実機でテストするか、シュミレータのIOSのバージョンを IOS12以下にすると、解決するかもしれません。
退会済みユーザー

退会済みユーザー

2020/07/17 02:45

回答有難うございます。 申し訳ありません。 シュミレータのバージョンと勘違いして回答していました。iosのバージョンは13.5です。 ios12は試してみたいと思いますが、仮にios12で実行できて、ios13だとエラーが出てしまう様だと、実用的なアプリケーションにはできないと言うことですよね?
fugu

2020/07/17 06:11

fuzzballさんの質問にも対応してください。 私なんかより、頼りになる方ですから。 実機で動けば問題ないと思います。 MacBookを使われてますか?
退会済みユーザー

退会済みユーザー

2020/07/18 03:27

回答ありがとうございます。 MacBookを使用しています。
guest

0

XcodeのVersion 12.0.1 でシミュレータ上での正常動作確認。

投稿2020/09/29 13:00

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

ベストアンサー

xcodeのVersion 12.0.1 にてシミュレータでの実行時正常動作確認。

投稿2020/09/29 12:57

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問