Я хотел использовать сопрограмму, чтобы заставить игрока подождать немного, прежде чем стрелять в новую пулю, но она никогда не пройдет мимо урожая. Вот кодUnity C# yield return new WaitForSeconds останавливает coroutine
protected override void Start() {
base.Start();
animator = GetComponent<Animator>();
score = GameManager.instance.playerScore;
playerLives = GameManager.instance.playerLife;
}
void Update(){
int horizontal = (int)Input.GetAxisRaw("Horizontal");
AttemptMove (horizontal, 0);
if (Input.GetKeyDown ("space")) {
if(canShoot){
Vector3 shootPosition = transform.position + new Vector3 (0, 0.5f, 0);
Instantiate (bullet, shootPosition, Quaternion.identity);
StartCoroutine(Shoot());
}
}
}
IEnumerator Shoot(){
Debug.Log("Start");
canShoot=false;
yield return new WaitForSeconds (shootingTimeDelay);
canShoot=true;
Debug.Log("End");
}
стрельбаTimeDelay установлена в 1.1f. Я не уничтожаю свой gameObject где угодно, и он работает правильно в других сценариях моего проекта.
Он никогда не печатает Конец. Я не понимаю, что не так
'Time.timeScale' больше, чем' 0'? –
Это равно 1 –
Это боги C#, которые вам говорят _not_ для использования сопрограмм – MickyD