Самое первое, что вы хотите сделать, это взглянуть на консоль ошибок Unity. Ваш код выдает несколько ошибок, они будут отображаться красным цветом. Дважды щелкните по ошибке, которая будет добавлена в ваш код.
Кроме того, попробуйте найти хороший редактор, такой как VS Code, так как он поможет вам быстро найти проблемы, добавив красные волнистые подчеркивания. Используя два вышеуказанных подхода, вы сможете самостоятельно найти ~ 99% своих проблем в следующий раз, а затем спросить в форумах оставшийся 1%.
Давайте go через ваш шаг кода шаг за шагом:
private Rigidbody Rigidbody;
В Unity обычно требуется тип в верхнем регистре Rigidbody
, но имя переменной в нижнем регистре rigidbody
(хотя в соглашениях о кодировании C# предлагаются свойства в верхнем регистре). В любом случае, не используйте то же имя, что и тип, поэтому напишите:
private Rigidbody rigidbody;
или например (сейчас я опускаю значение по умолчанию private
, хотя вы также можете предпочесть оставить его, и Я использую более короткое имя переменной и уточняю ее начальное значение):
Rigidbody body = null;
В следующем коде:
GetComponent<Rigidbody>().velocity = 0;
... вы прежде всего получите компонент rigidbody
снова. Это не нужно, если вы получили его один раз в начале (и для многократного использования, может отставать), поэтому сделайте это так:
void Start()
{
rigidbody = GetComponent<Rigidbody>();
}
А во-вторых, вы назначаете 0, но вы хотите назначить new Vector3(0f, 0f, 0f)
, или просто
rigidbody.velocity = Vector3.zero;
rigidbody.angularVelocity = Vector3.zero;
Наконец, вы пишете
player.transform.position = respawnPoint.transform.position;
... но player и respawnPoint уже преобразованы, так что вы можете использовать более простой
player.position = respawnPoint.position;
Удачи!