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

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

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

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

9540閲覧

「Play」にするとプレイヤーキャラクターだけが表示されない

unity_user_a

総合スコア23

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/04/12 09:53

編集2020/04/14 13:34

前提・実現したいこと

Unityで2Dの横スクロールアクションゲームを制作しています。
試しにPlayを押してゲームを起動したところ、プレイヤーキャラクターだけが画面に表示されませんでした。

自分でも色々調べて試しましたが、初心者ということもありよく分からず、解決できませんでした。
回答とまでいかなくても、他に試すことやアドバイスを頂きたいです。宜しくお願い致します。

発生している問題・エラーメッセージ

プレイヤーキャラクターが、SceneビューやGameビュー、Main Cameraのカメラプレビューには表示されているのが、Playでゲームを起動すると画面から消えて、表示されなくなります。
ただ、プレイヤーに適用したスクリプトは機能していて、「見えないキャラクターを操作できる状態」になっています。

他の、敵キャラクターや地面、背景などは全て常に表示されていますし、プレイヤーも含めて適用しているスクリプトも全て正常に動作しています。
ゲームを起動しても、エラーメッセージは出ません。
イメージ説明
イメージ説明
イメージ説明

試したこと

Main Camera
プレイヤーの子オブジェクトにしていたのを独立させ、プレイヤーを追従するスクリプトを適用させた。
(追記)元々は、敵や地面、背景などプレイヤー以外のオブジェクトがスクリプトは動作している状態で画像だけ消え、何もない空間でプレイヤーを操作できる状態でした。それを直すために何処か(スクリプト以外)をいじったところ、今度はプレイヤーの画像だけが消えました。

スクリプトは正常に動作しており、見えない状態のプレイヤーを動きに合わせて追従して映している模様。
Culling MaskはEverythingになっているのを確認済。
↓スクリプト
イメージ説明

Canvas
経過時間やゴール時のリザルト画面を表示するために作成。
Render ModeをScreen Space - Overlay、Cameraどちらにしても変化なし。

補足情報(FW/ツールのバージョンなど)

バージョンは、Unity 2019.2.15f1 (64-bit)

Build Settingsでプラットフォームは、iOS用になっています。

参考にしているサイト
れー@DKRevel 「ゲームの作り方」
https://dkrevel.com/makegame-beginner

追記
↓プレイヤーに適用したスクリプト
イメージ説明
イメージ説明
イメージ説明
イメージ説明
イメージ説明
イメージ説明
イメージ説明
イメージ説明

また、下の画像は、Playでゲームを動かした状態のままHierarchyビュー上でPlayerを選択した時のInspectorビューの様子です。
イメージ説明
イメージ説明
イメージ説明
イメージ説明
イメージ説明

↓ゲームマネージャーのスクリプト(GManager)
イメージ説明

↓ステージコントローラーのスクリプト(StageCtrl)
イメージ説明

回答やアドバイス、宜しくお願いします。

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

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

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

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

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

Bongo

2020/04/14 10:46

「プレイヤーに適用したスクリプト」の内容を追記いただけますと手がかりになりそうな気がします。 他に手がかりになるかもしれない事項として、Playでゲームを動かした状態のままHierarchyビュー上でプレイヤーオブジェクト(「Player」でしょうかね?)を選択したとき、Inspectorビューの様子がどうなっているかスクリーンショットをご提示いただけると何かヒントになるかもしれません。
unity_user_a

2020/04/14 13:36

2020/4/14 22:35頃、情報を追加しました。 宜しくお願い致します。
guest

回答1

0

ベストアンサー

説明不足ですみませんでした...!「スクリーンショットをご提示いただけると」と申し上げたのはInspectorの方だけでして、スクリプトの方は質問文中の文章として...つまり質問投稿画面の「<code>」アイコンのついたボタンを押すと挿入される雛形の「コード」と書かれた部分を置き換える形でスクリプトをコピー&ペーストしていただければよかったのです。お手間を取らせて申しわけないです...
とはいえけっこう長いスクリプトのようですので、質問文中へのペーストだと今度は文字数制限にひっかかってしまったかもしれません。ひとまず今のところはスクリーンショット状態のままでいいかと思います。

ゲームプレイ中にプレイヤーが見えない直接の原因として疑われるのは、カメラとプレイヤーの前後関係の狂いのような気がします
カメラのスクリプト中で...

C#

1transform.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

投稿2020/04/14 19:24

Bongo

総合スコア10807

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

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

unity_user_a

2020/04/15 07:02

Bongoさん、こちらこそ早朝から丁寧なご回答を下さり、ありがとうございます!とても嬉しかったです!! ただ今オブジェクトのZ座標を確認した所、-4993.0はコンティニュー地点の座標でした。それをプレイヤーのZ座標の0に合わせてからゲームを起動した所、無事にプレイヤーも映った状態に戻り、他も正常に動作していました!!! 本当に助かりました!!ベストアンサーと高評価、フォローもさせて頂きました! 今後も、何か質問させて頂きたいことが出来た際には、知恵を御貸し頂けると幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問