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

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

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

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

Swift

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

Q&A

解決済

1回答

544閲覧

画面全体にマップ画像を配置する方法

hodoru3sei

総合スコア284

SpriteKit

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

Swift

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

0グッド

0クリップ

投稿2018/09/02 10:56

編集2018/09/02 15:19

SwiftのSpriteKitで実装―タワーディフェンスゲームの大枠の作り方とコツ (1/3)の記事を参考に写経を初めて見たのですが、座標の指定がちがってしまっているようで、画面いっぱい画像を表示することができません。

GameSceneの中, +1の意味はよくわかっていませんが、背景画像をviewのフレームの大きさで割ってうまく一面に表示できるようにしているのだと思います。

lang

1import SpriteKit 2 3class GameScene: SKScene { 4 override func didMove(to view: SKView) { 5 let fieldImageLength: CGFloat = 32 6 for i in 0...Int(frame.size.width / fieldImageLength) + 1 { 7 for j in 0...Int(frame.size.height / fieldImageLength) + 1 { 8 let field = SKSpriteNode(imageNamed: "Field") 9 field.position = CGPoint(x: CGFloat(i) * fieldImageLength, y: CGFloat(j) * fieldImageLength) 10 field.zPosition = -1 11 addChild(field) 12 } 13 } 14 } 15} 16

記事に書いてあったのでscaleModeを変えました。.aspectFill, .aspectFit, fill, .resizeFill全て試したのですがうまく表示されませんでした。

lang

1scene.scaleMode = .resizeFill

現状の画面

画面

現状はこのように右上半分だけ背景画像が表示されるようになっています。viewにアクセスしているframe.size.のところ部分がSwiftのバージョンが新しくなったことによって変わってしまったりしているのでしょうか?

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

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

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

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

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

fuzzball

2018/09/03 00:13

並べる前に、まず一枚だけ左上に表示してみてはどうでしょうか?
guest

回答1

0

ベストアンサー

参照している記事を確認してみました。

この記事は、2015年に書かれたもので、使用しているXcodeのバージョンが古いです。

frameの仕様についてはバージョンが変わっても変化ありませんが、古いXcodeで作ったGameプロジェクトのテンプレートと、今のXcodeで作ったGameプロジェクトのテンプレートの内容が違うので、ベースとしているものが異なり、それが原因で記事の説明通りにできないということです。

具体的には、今のXcodeのGameScene.sksファイルは、座標(0,0)が画面の中心位置となるよう設定されています。古いXcodeで作ったサンプルは座標(0,0)が画面の左下になるよう設定されていました。
古いプロジェクトのsksファイルを前提として座標(0,0)から画像を並べると、今のプロジェクトの座標(0,0)は画面の中心位置なので、画像は画面の中心位置から右上の方向に並べられてしまうということです。

GameScene.sksファイルのAnchor Pointの設定が (0.5, 0.5)になっているのを(0, 0)に変更すれば、画面の左下が(0,0)になり、画面全体に画像を配置できると思います。

ただ、この記事を通りに進めても、また別のところでXcodeのバージョンの違いによる問題が出てくるかもしれないのでSpriteKitの勉強をする目的でこの記事を使うことはお勧めしません。少なくとも2016年9月以降の記事で、Xcode8(Swift3)以降を使って書かれた記事や書籍を参考にして勉強することをお勧めします。

投稿2018/09/03 02:03

TakeOne

総合スコア6299

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

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

hodoru3sei

2018/09/03 13:03

ありがとうございます! 新しい記事があればいいんですが、マップチップを使って作っているような記事をここしか見つけることができなくてこの記事で勉強してます... SpriteKitでゲーム作ってる記事自体あんまりない気がして悲しいです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問