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

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

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

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

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

Q&A

解決済

1回答

532閲覧

Unity(2D)でHP表示が正常に作動しない

kanata_02

総合スコア25

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

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

0グッド

0クリップ

投稿2019/04/30 02:00

Unityで2D横スクロールアクションを製作しているのですが、
「敵に当たったら表示されているHPアイコンを1つ減らす」という処理が上手くいかず、
現在「敵に当たったら表示されているHPアイコンが2つ減ってしまう」という状態になっています。
サイト等を調べたのですが、該当するものが無かったので質問させていただきました。

以下、オブジェクトにアタッチしているスクリプトのソースコードになります。
(PlayerのオブジェクトにアタッチしているためHP関連の部分のみ記載しています、わかりにくければ全文載せなおします。)
お手数ですが添削やアドバイス等よろしくお願いいたします。

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityStandardAssets.CrossPlatformInput; 5 6public class Player : MonoBehaviour 7{ 8 private Renderer renderer; 9 public GameObject[] life; 10 public int destroyCount = 0; 11 12 //~中略~ 13 14 void OnCollisionEnter2D (Collision2D col) 15 { 16 //敵との当たり判定 17 if (col.gameObject.tag == "Enemy") 18 { 19 destroyCount += 1; 20 Updatelife(); 21 StartCoroutine("Damage"); 22 23 } 24 } 25 26 void Updatelife(){ 27 28 //ライフ(HP) 29 for(int i = 0; i < life.Length; i++) 30 { 31 if( destroyCount <= i ) 32 { 33 life[i].SetActive(true); 34 } else 35 { 36 life[i].SetActive(false); 37 } 38 } 39 40 41 } 42 43 IEnumerator Damage () 44 { 45 //ダメージ時の無敵処理 46 gameObject.layer = LayerMask.NameToLayer("PlayerDamage"); 47 int count = 10; 48 while (count > 0){ 49 renderer.material.color = new Color (1,1,1,0); 50 yield return new WaitForSeconds(0.05f); 51 renderer.material.color = new Color (1,1,1,1); 52 yield return new WaitForSeconds(0.05f); 53 count--; 54 } 55 gameObject.layer = LayerMask.NameToLayer("Player"); 56 } 57} 58

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

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

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

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

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

k.matsuda

2019/05/28 12:52

敵と接触したときに、destroyCountが2つ増えているのではないですか?
kanata_02

2019/06/01 07:59

仰る通り、当たり判定のつけ方が悪くCountが2つ増えてしまっていました。 ご指摘ありがとうございます!
guest

回答1

0

自己解決

当たり判定を見直したところ解決いたしました。

投稿2019/06/01 07:59

kanata_02

総合スコア25

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問