質問: ### 前提・実現したいこと Unityで2Dの横スクロールアクションゲームを制作しています。 試しにPlayを押してゲームを起動したところ、プレイヤーキャラクターだけが画面に表示されませんでした。 自分でも色々調べて試しましたが、初心者ということもありよく分からず、解決できませんでした。 回答とまでいかなくても、他に試すことやアドバイスを頂きたいです。宜しくお願い致します。 ### 発生している問題・エラーメッセージ プレイヤーキャラクターが、SceneビューやGameビュー、Main Cameraのカメラプレビューには表示されているのが、Playでゲームを起動すると画面から消えて、表示されなくなります。 ただ、プレイヤーに適用したスクリプトは機能していて、「見えないキャラクターを操作できる状態」になっています。 他の、敵キャラクターや地面、背景などは全て常に表示されていますし、プレイヤーも含めて適用しているスクリプトも全て正常に動作しています。 ゲームを起動しても、エラーメッセージは出ません。 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/cee96299dca848ad12606aae6513ec14.jpeg) ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/52a78f5f6cd61d05522d6c1a35aaa33c.jpeg) ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/bc4de2b6b9e47fc972d23f8c03476ed4.jpeg) ### 試したこと Main Camera プレイヤーの子オブジェクトにしていたのを独立させ、プレイヤーを追従するスクリプトを適用させた。 (追記)元々は、敵や地面、背景などプレイヤー以外のオブジェクトがスクリプトは動作している状態で画像だけ消え、何もない空間でプレイヤーを操作できる状態でした。それを直すために何処か(スクリプト以外)をいじったところ、今度はプレイヤーの画像だけが消えました。 スクリプトは正常に動作しており、見えない状態のプレイヤーを動きに合わせて追従して映している模様。 Culling MaskはEverythingになっているのを確認済。 ↓スクリプト ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/e248b36865b436785555221977526b40.jpeg) Canvas 経過時間やゴール時のリザルト画面を表示するために作成。 Render ModeをScreen Space - Overlay、Cameraどちらにしても変化なし。 ### 補足情報(FW/ツールのバージョンなど) バージョンは、Unity 2019.2.15f1 (64-bit) Build Settingsでプラットフォームは、iOS用になっています。 参考にしているサイト れー@DKRevel 「ゲームの作り方」 https://dkrevel.com/makegame-beginner 追記 ↓プレイヤーに適用したスクリプト ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/84095edc96af60b0d30e5bbadda43652.jpeg) ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/61f3d0250b08340348f463da91f3e1a4.jpeg) ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/63dd548bdd721c6bc7bcd06ec8df5fa5.jpeg) ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/bd4ff782f8b9d645cd17bbe82e86e88b.jpeg) ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/4d736a34458533f8d8c1ac038edf4ade.jpeg) ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/279cbbdd32a9fe015b90ebe29958e0c9.jpeg) ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/bb318529fba792a8058b15fc3fc5b47b.jpeg) ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/f2e3b17c86f7a543762df577b108b160.jpeg) また、下の画像は、Playでゲームを動かした状態のままHierarchyビュー上でPlayerを選択した時のInspectorビューの様子です。 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/24c448500e4d8a98f2ab54a33e2c1328.jpeg) ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/b1879ecc50de54be6bc260bed4d8d5b7.jpeg) ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/307af80cc53c08e4cecffa45adf291b7.jpeg) ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/c956a16f7af9758059e25cf25391ab04.jpeg) ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/9f90f4293a5e72115c9e3b5dd1055177.jpeg) ↓ゲームマネージャーのスクリプト(GManager) ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/8a963f37e6ab2d3bf5eb3f9b020b3324.jpeg) ↓ステージコントローラーのスクリプト(StageCtrl) ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/1212924244839663e4f1e50021a7716f.jpeg) 回答やアドバイス、宜しくお願いします。
回答: 説明不足ですみませんでした...!「スクリーンショットをご提示いただけると」と申し上げたのはInspectorの方だけでして、スクリプトの方は質問文中の文章として...つまり質問投稿画面の「」アイコンのついたボタンを押すと挿入される雛形の「コード」と書かれた部分を置き換える形でスクリプトをコピー&ペーストしていただければよかったのです。お手間を取らせて申しわけないです... とはいえけっこう長いスクリプトのようですので、質問文中へのペーストだと今度は文字数制限にひっかかってしまったかもしれません。ひとまず今のところはスクリーンショット状態のままでいいかと思います。 ゲームプレイ中にプレイヤーが見えない直接の原因として疑われるのは、カメラとプレイヤーの前後関係の狂いのような気がします カメラのスクリプト中で... ``` transform.position = new Vector3(PlayerPos.x, 0, -10); ``` といった具合にX座標をプレイヤーに追従させている箇所がありますが、Z座標については-10で固定しています。ですのでプレイ中のカメラのZ座標は常に-10の位置をキープしているだろうと思われます。 これに対して、ご提示いただいたスクリーンショットの !図1!図2 に映っているプレイヤーのZ座標は-4993.0を示しており、異常に手前に飛んでしまっているようです。カメラのZ座標が-10ですから、プレイヤーはカメラの背後、はるか彼方にいるのだろうと想像され、カメラに映らないんじゃないかと思います。 すみませんが、なぜこうなってしまったかについてはまだ原因が分かりません。ゲームをスタートする前にはCamera PreviewやGameビューにプレイヤーがちゃんと映っていますので、この時点では前後関係は正常なんだろうと思います。 ゲームスタート前の各オブジェクトのZ方向の位置関係はどうなっているでしょうか?プレイヤーとカメラ、他にはコンティニュー位置オブジェクトだとかの位置は正常そうでしょうか。 それらに不審な点がなければ、次はゲームを実行しながら各オブジェクトのZ座標を観察してみますとさらなる手がかりが得られるかもしれません。プレイヤーがどんどん-Z方向に飛んでいく...みたいな異常な動きはないでしょうか(ご提示のスクリプトを拝見する限りではそんなことにはならなそうには思うのですが、ともかく何か糸口を見つけたいところです)。 下図のようにSceneビューの「2D」ボタンを切り替えて斜めからシーンを観察してみたり、SceneビューとGameビューを並べて同時に表示した状態でゲームをプレイしてみるのも異常発見の役に立つかもしれません。 !図3 !図4