Unity初心者です。5秒間キーを入力し、そして離したらチャージショットを放つようにしたいのですが出来ません。やったこととしてはここで検索をかけて出てきたもの(チャージショットで検索をかければ一番上にくるもの)、あとはググったらTime.timeなども関連したものはありましたが、これはゲームが始まったら時間を経過させてしまうもの、IEnumeraterなるコルーチンも英語の検索結果でいくつかありましたが、これは~秒後ーする、そしてそも~秒後またーするというもの、でどれも解決に至りませんでした。コードが知りたいのは正直ありますが、批判されると思いますしこの先も躓くと思うのでコード、ググり方も教授いただけると嬉しいです。試行錯誤したコードも一応載せておきますが、見にくくてすいません。既に述べた様にTime.timeでは出来ないことは分かっています。あと気になることと言えばprivate float 定義?したtimeが反映されないことの原因とかですかね(コメントアウトした部分です)、、。
コード
public
1 { 2 3 4 public GameObject BusterPrefab; 5 public GameObject chargeshot; 6 public int shotCount; 7 8 private float time = 0.0f; 9 private bool charging = false; 10 private float chargeTime = 0; 11 private float chargeRate = 2f; 12 13 public Text shelllavel; 14 // Start is called before the first frame update 15 void Start() 16 { 17 shelllavel.text = "残弾" + shotCount; 18 19 time = 0.0f; 20 } 21 22 // Update is called once per frame 23 void Update() 24 { 25 //移動制限 26 Vector2 pos = transform.position; 27 transform.position = new Vector2(Mathf.Clamp(pos.x, 0, 2), Mathf.Clamp(pos.y, 1, 3)); 28 29 30 if (Input.GetKey(KeyCode.L)) 31 { 32 StartCoroutine(TimerRoutine()); 33 charging = true; 34 time =+ Time.deltaTime; 35 Debug.Log("カウントしています"); 36 } 37 //if (Input.GetKeyUp(KeyCode.L)) 38 //{ 39 // if (time < 10f) 40 // { 41 42 // Instantiate(BusterPrefab, transform.position, Quaternion.identity); 43 // } 44 // //else 45 // //{ 46 // // Instantiate(chargeshot, transform.position, Quaternion.identity); 47 // //} 48 49 // //if (time > 11.0f) 50 // //{ 51 // // charging = false; 52 // // time = 0.0f; 53 // //} 54 55 // if (shotCount < 1) 56 57 // return; 58 59 // shotCount -= 1; 60 61 // shelllavel.text = "残弾" + shotCount; 62 63 //} 64 if (Input.GetKey(KeyCode.W)) transform.Translate(0,0.1f,0); 65 else if (Input.GetKey(KeyCode.A)) transform.Translate(-0.1f,0,0); 66 else if (Input.GetKey(KeyCode.S)) transform.Translate(0,-0.1f,0); 67 else if (Input.GetKey(KeyCode.D)) transform.Translate(0.1f,0,0); 68 69 70 } 71 72 IEnumerator TimerRoutine() 73 { 74 yield return new WaitForSeconds(5f); 75 chargeTime += chargeRate; 76 Fire(); 77 } 78 79 void Fire() 80 { 81 if (Input.GetKey(KeyCode.L) && Time.time > 5f) 82 { 83 Instantiate(chargeshot,transform.position,transform.rotation); 84 chargeTime = 0; 85 } 86 if (Input.GetKeyUp(KeyCode.L) && Time.time < 5f) 87 { 88 chargeTime = 0; 89 } 90 } 91}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。