SceneKit サンプル Fox を SwiftUI で実行

iOS

キツネ君が3D空間を駆け回る、Apple の SceneKit サンプルゲームです。

Fox: Building a SceneKit Game – Apple Developer
Version 2.2, 2016-09-13
https://developer.apple.com/library/archive/samplecode/Fox/Introduction/Intro.html

Xcode 8, iOS 9 向けサンプルで、コードベースがやや古く、そのままではコンパイルが通りませんでした。

今回は、これを現代の Xcode + iPhone でも動かせるように修正しました。

修正ポイント

・Swift 3 から Swift 5.3 に更新
・悪しき Storyboard の廃止
・悪しき UIViewController を廃止して SwiftUI に変える
・UIViewRepresentable を使わず、iOS14からの SpriteView, SceneView を使う
・UIViewController で受けていた TouchesBegin などを SKScene で受けるように修正
・Warning 件数を限りなく0に近づける

SpriteView – A SwiftUI view that renders a SpriteKit scene.
https://developer.apple.com/documentation/spritekit/spriteview

SceneView – A SwiftUI view for displaying 3D SceneKit content.
https://developer.apple.com/documentation/scenekit/sceneview

全コードは以下のレポジトリの github/scenekit_fox ブランチにあります。

GitHub - aship/test_swift
Contribute to aship/test_swift development by creating an account on GitHub.
実行方法

コードを上記 github からクローンして、該当ブランチにチェックアウトします。

TestSwift.xcodeproj ファイルをダブルクリックして Xcode で実行します。

GamePad にも対応しているので、実機の iPhone で実行した場合、PS4 の DUALSHOCK4 とか bluetoothに対応してるコントローラーを接続しても、操作できます。

既知の問題点

・実行した直後のロードが遅くてオープニングシーンが一部カットされる
・コードが整理されてないのでリファクタリングが必要

誰か修正できる方いましたらプルリクお願いします。

投げ銭

Amazonギフト券(Eメールタイプ)
Eメールの宛先:
ashipp2000@gmail.com
https://www.amazon.co.jp/dp/B004N3APGO

新生銀行 銀座支店
普通 0309642
アシナ ヤスオ

それではよい SwiftUI ライフを!

SwiftUIを学ぶのにおすすめの本

SwiftUI 徹底入門

SwiftUIではじめるiPhoneアプリプログラミング入門

iOS/macOS UIフレームワーク SwiftUIプログラミング

コメント

タイトルとURLをコピーしました