前提・実現したいこと
unityでC#を使用しています。
2Dのゲームです。
ifやelse ifを使って、ゲームの状況によって違う処理をしたいのですが、
現状だとifやelse if に書いてあることが一度にすべて実行されてしまいます。
・実現したいこと
①画像がプレーヤーと接触しているときにスペースキーを押すと(1回目)画像が少し上がる。
②接触しているときに再度スペースキーを押すと(2回目)画像が少し上がる。
③接触しているときに再度スペースキーを押すと(3回目)画像が消える。
現状では、一度スペースキーを押すと①~③がいっぺんに実行されてしまいます。
初歩的な間違い/勘違いが原因なのだろうと思いますが、アドバイスをいただければ幸いです。
発生している問題・エラーメッセージ
エラーは出ていません。
該当のソースコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Pull: MonoBehaviour{ 6 7 private bool flag = false; 8 private bool spaceonce = false; 9 private bool spacetwice = false; 10 11 void OnTriggerStay2D(Collider2D col){ 12 if (col.gameObject.tag == "player"){ 13 if (Input.GetKeyDown(KeyCode.Space)){ 14 //以下の①-③が一度に実行されてしまいます。 15 if(spaceonce == false && spacetwice == false){ //① 16 transform.Translate(0.0f, 0.1f, 0.0f); 17 spaceonce = true; 18 } 19 else if (spaceonce == true && spacetwice == false){ //② 20 transform.Translate(0.0f, 0.1f, 0.0f); 21 spacetwice = true; 22 } 23 else if (spaceonce == true && spacetwice == true){ //③ 24 flag = true; 25 } 26 } 27 } 28 } 29 30 void Update(){ 31 if (flag){ 32 Destroy(this.gameObject); 33 } 34 } 35} 36
試したこと
処理の一部をUpdate内に書いてみたりしましたが、同じような挙動になってしまいました。
補足情報(FW/ツールのバージョンなど)
使用しているのはUnity 2019.3.0a8 (64-bit)です。
回答2件
あなたの回答
tips
プレビュー