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

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

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

HTMLで用いる<button>タグです。

Unity

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

Q&A

解決済

2回答

1717閲覧

Unityで次へ進むためのボタンがUIでゲームクリアが表示されたら表れるようにしたいです

ranerane0101

総合スコア70

button

HTMLで用いる<button>タグです。

Unity

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

0グッド

0クリップ

投稿2020/09/05 16:26

編集2020/09/06 16:42

前提・実現したいこと

Unityで次へ進むためのボタンがUIでゲームクリアが表示されたら表れるようにしたいです
ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

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

特にエラーは出ていません

エラーメッセージ

該当のソースコード

ソースコード

public GameObject button;

void Start()
{
//hitPoint = hitPointMax;
button.SetActive(false);
}

private void OnTriggerEnter2D(Collider2D collision)
{

if (hitPoint <= 0) { button.SetActive(true); } }

<追記>

解答ありがとうございます。まさかこんなに来て下さるとは!

そうですね、、わがままでした。追記しておきましたのでどうか・・。

ただデバックで
24
UnityEngine.Debug:Log(Object)
EnemyAP:OnTriggerEnter2D(Collider2D) (at Assets/Scripts/EnemyAP.cs:40)
と出ておりましたのでHPは減っていると思います。

すいません、赤のエラーではなくて黄色のエラーみたいなのはありました。

Assets\Scripts\EnemyAP.cs(12,9): warning CS0414: The field 'EnemyAP.damage' is assigned but its value is never used

12・9行目というのはint damage = -1;
とpublic int hitPoint = 45;でした。

重ね重ねよろしくお願いします。

public class EnemyAP : MonoBehaviour
{
public int hitPoint = 45;
public int hitPointMax = 45;

int damage = -1; public Text Scoretext; public Text Gamecleartext;

// Update is called once per frame
void Update()
{
Scoretext.text = hitPoint.ToString();

if(hitPoint <= 0) { button.SetActive(true); }

private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.gameObject.tag == "Buster")
{
hitPoint -= 1;
Debug.Log(hitPoint);
hitPoint = Mathf.Clamp(hitPoint, 0, hitPointMax);
}

if (hitPoint <= 0) { Destroy(gameObject); //Instantiate(m_explosionPrefab, collision.transform.localPosition, Quaternion.identity); //GameObject.Find("Canvass").GetComponent<ScoreController>().GameOver(); button.SetActive(true); } } }

試したこと

ここに問題に対して試したことを記載してください。
コードはパクられることを考慮し要点だけ載せています。

状況としては敵オブジェクトのスクリプトにHPを設定し、HPが基準値より下回ればDestroyされます。

HPはUIでも表示させており、このAPのスクリプトからUIの数字表記が減算される処理を引っ張って使っています。

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

ここにより詳細な情報を記載してください。
Unity初心者ですので本当に初歩のことかもしれません。

public GameObject button;でボタンというオブジェクトはアタッチ出来ないのでしょうか?

インスペクターからボタンオブジェクトはアタッチ出来ましたし、ゲームが始まるとボタンが非表示になっているのであとは表示させることだけなのですが、良ければご教授願いたく、はじめてここを利用させていただきました。

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

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

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

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

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

Yukirr4_

2020/09/05 23:06

OnTriggerEnter2Dのところで、 hitPointが減っているようには見えませんけど、いつhitPointの値は変わるのでしょうか
ranerane0101

2020/09/06 16:49

Busterというタグを付した弾オブジェクトがEnemyに当たると減る様になっています。 少しややこしいですがCanvasの数値を減らすスクリプトとEnemyそのものにHPを課しているスクリプトがあるのですが、どちらも動作できています 質問を編集したのでよければそのほうをご確認してもらえると嬉しい所存です。 また一度よろしくお願いします。
guest

回答2

0

ベストアンサー

考えられる原因
buttonが割り当てられていない (publicで割り当てられているのでこれはない)
OnTriggerEnter2Dが呼ばれていない
hitPointが0を下回らない
・質問に書いていない部分でボタンを非表示にしている(可能性大)

あと、「コードはパクられることを考慮し要点だけ」とおっしゃいますが、この不具合の原因がわかっていない以上そのような心配をしたらわかるものも分からないと思います。

投稿2020/09/06 14:09

Yukirr4_

総合スコア728

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

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

ranerane0101

2020/09/06 16:38

解答ありがとうございます。まさかこんなに来て下さるとは! そうですね、、わがままでした。追記しておきましたのでどうか・・。 ただデバックで 24 UnityEngine.Debug:Log(Object) EnemyAP:OnTriggerEnter2D(Collider2D) (at Assets/Scripts/EnemyAP.cs:40) と出ておりましたのでHPは減っていると思います。 すいません、赤のエラーではなくて黄色のエラーみたいなのはありました。 Assets\Scripts\EnemyAP.cs(12,9): warning CS0414: The field 'EnemyAP.damage' is assigned but its value is never used 12・9行目というのはint damage = -1; とpublic int hitPoint = 45;でした。 重ね重ねよろしくお願いします public class EnemyAP : MonoBehaviour { public int hitPoint = 45; public int hitPointMax = 45; int damage = -1; public Text Scoretext; public Text Gamecleartext; // Update is called once per frame void Update() { Scoretext.text = hitPoint.ToString(); if(hitPoint <= 0) { button.SetActive(true); } private void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.tag == "Buster") { hitPoint -= 1; Debug.Log(hitPoint); hitPoint = Mathf.Clamp(hitPoint, 0, hitPointMax); } if (hitPoint <= 0) { Destroy(gameObject); //Instantiate(m_explosionPrefab, collision.transform.localPosition, Quaternion.identity); //GameObject.Find("Canvass").GetComponent<ScoreController>().GameOver(); button.SetActive(true); } } }
guest

0

Find~でオブジェクトを取得したら出来ました。ありがとうございました!

投稿2020/09/08 08:00

ranerane0101

総合スコア70

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問