Остановить подсчет очков после уничтожения игрока?C#

Место общения программистов C#
Ответить
Anonymous
 Остановить подсчет очков после уничтожения игрока?

Сообщение Anonymous »

Я пытаюсь создать свою первую игру, но уже давно застрял в этой проблеме. Кажется, я не могу понять, как проверить, мертв ли ​​игрок, и остановить подсчет очков. Также я хочу знать, как сохранить этот результат.
Моя игра проста. Вам нужно уклоняться от множества сфер как можно дольше и набирать больше очков.
Но когда мой игрок сталкивается с одной из сфер, игра все равно продолжается. У меня есть сценарий «Двигаться вперед» для сфер противника, которые движутся с определенной скоростью, и сценарий «Уничтожить за пределами поля», когда сферы проходят мимо игрока. они уничтожаются за кадром и добавляют 5 очков к счету. У меня есть скрипт «Game Manager», который создает все сферы и показывает текущий счет. (Возможно, мне придется перенаправить часть кода, верно?)
Вот что находится в моем скрипте Game Manager. Мне нужно знать, как на самом деле проверить, мертв ли ​​игрок, когда что-то происходит.

Код: Выделить всё

using TMPro;
using UnityEngine;

public class GameManager : MonoBehaviour
{
public GameObject[] EnemyPrefabs;
private float spawnRangeX = 17;
private float spawnPosZ = 35;
private float StartDelay = 2.2f;
private float SpawnInterval = 0.1f;
public bool PlayerAlive;
public TextMeshProUGUI scoreText;
private int score;
public TextMeshProUGUI gameOverText;
// Start is called before the first frame update
void Start()
{
score = 0;
UpdateScore(0);

InvokeRepeating("SpawnRandomEnemy", StartDelay, SpawnInterval);

}

// Update is called once per frame
void Update()
{
PlayerAlive = true;
}

public void UpdateScore(int scoreToAdd)
{
score += scoreToAdd;
scoreText.text = "Score: " + score;
}

void SpawnRandomEnemy()
{
int enemyIndex = Random.Range(0, EnemyPrefabs.Length);
Vector3 spawnPos = new Vector3(Random.Range(-spawnRangeX, spawnRangeX), 0, spawnPosZ);
Instantiate(EnemyPrefabs[enemyIndex], spawnPos, EnemyPrefabs[enemyIndex].transform.rotation);
}
}

В скрипте «player» у меня есть «private void OnTriggerEnter(Collider Other)», чтобы уничтожить игрока и активировать «игра окончена». текст. Я также поместил туда «PlayerAlive = false», потому что все еще пытаюсь это понять.

Подробнее здесь: https://stackoverflow.com/questions/764 ... -destroyed
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»