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

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

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

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

Unity

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

Q&A

解決済

1回答

1504閲覧

キーを押すとDebug Log は表示されるのにbool変数やSprite Rendererのチェックが切り替わらない

pokkuru

総合スコア8

C#

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

Unity

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

0グッド

0クリップ

投稿2021/09/08 10:22

前提・実現したいこと

今、ARPGを作っています。
Bキーを押すとHUD(メニューやHP、MP表示など)を表示したり消したりしたいのですが、
bool変数やSprite Rendererが切り替わらないことに困っています。

発生している問題

Debug Logは表示されるのに、 bool変数やSprite Rendererが切り替わらない

bool変数やSprite Rendererを切り替えるスクリプト

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class HUD_Basic : MonoBehaviour 6{ 7 public bool HUD; 8 // Start is called before the first frame update 9 void Start() 10 { 11 HUD = false; 12 GetComponent<SpriteRenderer>().enabled = false; 13 } 14 15 // Update is called once per frame 16 void Update() 17 { 18 if(Input.GetKeyDown(KeyCode.B) && HUD == false) 19 { 20 HUD = true; 21 GetComponent<SpriteRenderer>().enabled = true; 22 Debug.Log("ON"); 23 } 24 25 if (Input.GetKeyDown(KeyCode.B) && HUD == true) 26 { 27 HUD = false; 28 GetComponent<SpriteRenderer>().enabled = false; 29 Debug.Log("OFF"); 30 } 31 } 32}

bool変数によってキャラの動きを止めるスクリプト

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class BrightMove : MonoBehaviour 6{ 7 public float speed; 8 private Rigidbody2D rb; 9 private Vector2 input; 10 public int front = 1; 11 private Animator anim; 12 public HUD_Basic hud; 13 // Start is called before the first frame update 14 void Start() 15 { 16 rb = GetComponent<Rigidbody2D>(); 17 anim = GetComponent<Animator>(); 18 anim.SetInteger("BrightState", 4); 19 speed = 0.075f; 20 } 21 22 // Update is called once per frame 23 void Update() 24 { 25 Vector2 liscale = gameObject.transform.localScale; 26 27 if (Input.GetKey(KeyCode.DownArrow)) 28 { 29 anim.SetInteger("BrightState", 1); 30 front = 1; 31 } 32 33 if (Input.GetKey(KeyCode.RightArrow)) 34 { 35 anim.SetInteger("BrightState", 2); 36 front = 2; 37 if(liscale.x < 0) 38 { 39 liscale.x *= -1; 40 gameObject.transform.localScale = liscale; 41 } 42 } 43 44 if (Input.GetKey(KeyCode.UpArrow)) 45 { 46 front = 3; 47 anim.SetInteger("BrightState", 3); 48 } 49 50 if (Input.GetKey(KeyCode.LeftArrow)) 51 { 52 front = 4; 53 anim.SetInteger("BrightState", 2); 54 if (liscale.x > 0) 55 { 56 liscale.x *= -1; 57 gameObject.transform.localScale = liscale; 58 } 59 } 60 61 if (Input.GetKeyUp(KeyCode.DownArrow)) 62 { 63 anim.SetInteger("BrightState", 4); 64 } 65 66 if (Input.GetKeyUp(KeyCode.RightArrow)) 67 { 68 anim.SetInteger("BrightState", 5); 69 } 70 71 if (Input.GetKeyUp(KeyCode.UpArrow)) 72 { 73 anim.SetInteger("BrightState", 6); 74 } 75 76 if (Input.GetKeyUp(KeyCode.LeftArrow)) 77 { 78 anim.SetInteger("BrightState", 5); 79 } 80 81 if(Input.GetKey(KeyCode.RightArrow) && Input.GetKey(KeyCode.UpArrow)) 82 { 83 anim.SetInteger("BrightState", 3); 84 } 85 86 if (Input.GetKey(KeyCode.LeftArrow) && Input.GetKey(KeyCode.UpArrow)) 87 { 88 anim.SetInteger("BrightState", 3); 89 } 90 91 if (Input.GetKey(KeyCode.RightArrow) && Input.GetKey(KeyCode.DownArrow)) 92 { 93 anim.SetInteger("BrightState", 1); 94 } 95 96 if (Input.GetKey(KeyCode.LeftArrow) && Input.GetKey(KeyCode.DownArrow)) 97 { 98 anim.SetInteger("BrightState", 1); 99 } 100 } 101 102 void FixedUpdate() 103 { 104 input = new Vector2( 105 106 Input.GetAxisRaw("Horizontal"), 107 Input.GetAxisRaw("Vertical")); 108 109 if(input == Vector2.zero) 110 { 111 return; 112 } 113 114 rb.position += input * speed; 115 116 //関係してるのはここから下 117 118 if(hud.HUD == true) 119 { 120 speed = 0; 121 } 122 123 if(hud.HUD == false) 124 { 125 speed = 0.075f; 126 } 127 } 128}

試したこと

試しにBキーを押してみましたが、何回押してもDebug Logには"OFF"としか出ませんでした。

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

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

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

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

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

guest

回答1

0

ベストアンサー

C#

1 void Update() 2 { 3 if(Input.GetKeyDown(KeyCode.B) && HUD == false) 4 { 5 HUD = true; 6 GetComponent<SpriteRenderer>().enabled = true; 7 Debug.Log("ON"); 8 } 9 10 if (Input.GetKeyDown(KeyCode.B) && HUD == true) 11 { 12 HUD = false; 13 GetComponent<SpriteRenderer>().enabled = false; 14 Debug.Log("OFF"); 15 } 16 }

この部分、「B」が押されたとき最初のif文でHUDがtrueとなり、次のif文でHUDがfalseになります。
ifステートメントについて学習しましょう。

投稿2021/09/08 10:59

YAmaGNZ

総合スコア10294

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

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

pokkuru

2021/09/08 12:04

ありがとうございます! 解決しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問