🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Unity

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

Q&A

解決済

1回答

3722閲覧

unity 落ちているアイテムを拾う際の処理

yoshiteru21

総合スコア44

Unity

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

0グッド

0クリップ

投稿2019/11/19 08:17

編集2019/11/20 01:19

unityにて、落ちているItemのタグを付けたアイテムを拾う(destroyでアイテム削除)ことができる処理を作成したのですが、2個とも重なっているアイテムを拾うと一回ボタンを押すと二つとも拾ってしまう処理を一つずつ拾うように処理させたいのですが、その方法が検討つきません。
ご教授のほどお願い致します。

using

1using System.Collections.Generic; 2using UnityEngine; 3using UnityEngine.UI; 4using InputKey; 5using UnityEngine.SceneManagement; 6 7public class Item_IventAction : MonoBehaviour 8{ 9 public AudioClip audio01; 10 GameObject unityChan; 11 GameObject Equipsetimage; 12 GameObject Equipsetimage2; 13 GameObject Equipsetimage3; 14 15 FadeContraller fadecontrallerScript; 16 PlayerScript4 playerscript; 17 EquipSetImage1 equipimageScript; 18 EquipSetImage2 equipimage2Script; 19 EquipSetImage3 equipimage3Script; 20 21 22 23 public bool Item = false; //普通のアイテムかの判別の時に必要なもの 24 public bool KeyFlag = false; //フラグを作るために必要なアイテムかの判別に必要なもの 25 26 27 AudioSource audioSource; 28 Animator anim; //アニメ 29 EnemyItem enemyItem1; 30 31 // Start is called before the first frame update 32 void Start() 33 { 34 audioSource = GetComponent<AudioSource>(); 35 Equipsetimage = GameObject.Find("EquipImage"); 36 Equipsetimage2 = GameObject.Find("EquipImage2"); 37 Equipsetimage3 = GameObject.Find("EquipImage3"); 38 unityChan = GameObject.Find("UnityChan"); 39 equipimageScript = Equipsetimage.GetComponent<EquipSetImage1>(); 40 equipimage2Script = Equipsetimage2.GetComponent<EquipSetImage2>(); 41 equipimage3Script = Equipsetimage3.GetComponent<EquipSetImage3>(); 42 fadecontrallerScript = AntenPanel.GetComponent<FadeContraller>(); 43 playerscript = unityChan.GetComponent<PlayerScript4>(); 44 anim = GetComponent<Animator>(); 45 } 46 47 // Update is called once per frame 48 void Update() 49 { 50 if (MyInput.MyInputKeyDown(KeyCode.C) || Input.GetKeyDown("joystick button 1")) //イベントアクション 51 { 52 53 } 54 } 55 56 void OnTriggerStay2D(Collider2D col) 57 { 58 if (Input.GetKeyDown(KeyCode.C) || Input.GetKey(KeyCode.C) || Input.GetKeyDown("joystick button 1")) 59 { 60 //アイテムを拾うとき 61 if (col.gameObject.tag == "Item") 62 { 63 if (equipimageScript.EquipImageSet1 == false || equipimage2Script.EquipImageSet2 == false || equipimage3Script.EquipImageSet3 == false) //アイテムスロットが満タンではないなら拾うことができる 64 { 65 audioSource.PlayOneShot(audio01); 66 anim.SetBool("Action1", false); 67 anim.SetBool("IventAction", true); 68 Destroy(col.gameObject); 69 } 70 } 71 72 73 //キーアイテムを拾うとき 74 if(col.gameObject.tag == "KeyItem") 75 { 76 audioSource.PlayOneShot(audio01); 77 KeyFlag = true; 78 anim.SetBool("Action1", false); 79 anim.SetBool("IventAction", true); 80 Destroy(col.gameObject); 81 } 82 } 83 } 84} 85コード

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

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

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

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

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

guest

回答1

0

ベストアンサー

条件が、重なっているときにボタンを押す、だけなので同時に拾ってしまいます
まだ他のアイテムを拾っていない、という条件を付け足す必要があります

・プレイヤークラスにPickupFlagをつけて、ボタンを押したらtrueにする
・アイテムはPickupFlagがtrueならfalseにして、アイテムを拾う

こういう感じでいいと思います

投稿2019/11/20 02:12

izmktr

総合スコア2856

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

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

yoshiteru21

2019/11/20 05:50

ありがとうございます。無事上手くいきました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問