前提・実現したいこと
今、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"としか出ませんでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/08 12:04