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

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

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

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

Swift

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

Q&A

解決済

1回答

2109閲覧

【SpriteKit】物理エンジンによる2Dスクロールアクションの挙動について

konsukeyama

総合スコア12

SpriteKit

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

Swift

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

0グッド

1クリップ

投稿2017/06/29 14:40

編集2017/07/02 08:40

Swift3&SpriteKitを使って、スーパーマリオのクローンを作成しています。
タイルマップを利用して「地面の各タイル(テクスチャ)」に物理設定を施しているのですが、下記A、Bのパターンで検証したところ、それぞれ次の問題が発生してしまいます。

####A. 地面をボリュームベース(rectangleOf)の剛体にした場合

  • タイルとタイルの境界でプレイヤーが引っかかり、停止してしまう。

※参考:フレームレートは60fpsで安定

####B. 地面をエッジベース(edgeLoopFrom)の剛体にした場合

  • プレイヤーが地面から僅かに浮いてしまう。
  • 画面スクロールがカクカクしてしまう。

※参考:フレームレートは59〜60.2fpsなど安定しない

イメージ説明

####ご教授願いたいこと
【質問1】
剛体(SKPhysicsBody)の特性的に、ボリュームベースよりエッジベースの方が動作負荷が低くなるという情報を幾つか見かけたのですが、そうではなく、エッジベースの方が動作負荷が高いものでしょうか?

【質問2】
エッジベースの場合にプレイヤーが僅かに浮いてしまうのはなぜでしょうか?

####補足情報

  • プレイヤーの剛体を「円」にすることでパターンA(ボリュームベース)でも引っかからないようにできると理解していますが、今回はプレイヤーをブロックの端っこに立たせたり、衝突時の挙動を本物に近づけたいため、できれば「矩形」もしくは「角の丸い矩形」でいきたいと考えています。
  • 今回のサンプルソースを下記GitHubへアップしてあります。

GameScene.swiftの「135行」と「138行」のコメントアウトを付け替えることで、A/Bの切り替えが行えます。挙動確認にどうぞ。
https://github.com/konsukeyama/GameApp_proto2

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

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

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

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

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

guest

回答1

0

自己解決

「質問1」については、公式のドキュメントを(翻訳しながら頑張って)読んだところ、エッジベースの方が負荷が高いということが分かりました。勉強不足でした。
https://developer.apple.com/documentation/spritekit/skphysicsbody

「質問2」のついてはまだ分かっていません。

投稿2017/07/02 08:30

konsukeyama

総合スコア12

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

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

konsukeyama

2017/07/09 06:34

「質問2」ですが、下記ページに似た内容がありました。 https://stackoverflow.com/questions/34448536/gap-between-skspritenodes-in-spritekit-collision-detection/34456513#34456513 どうやら、矩形のエッジベースの剛体の場合は、どうしてもこの問題が発生するようです(…と理解しました)。 この問題がSpritkitの問題なのか物理エンジン(Box2D)の特性なのかまでは分かりませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問