Делаю скрипт для перемещения персонажа по урокам в интернете. Застрял на моменте прыжка. Unity выкидывает мне:
NullReferenceException: Object reference not set to an instance of an object.
Пара моих тестов показала, что значение rb остаётся null после start. Rigidbody на тело нацеплен, само тело указано (но и до введения public GameObject было всё тоже самое)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MainHeroContr : MonoBehaviour
{
public float speed = 1f;
public float force = 1f;
bool isGround = true;
public GameObject srcrb;
Rigidbody rb;
void start()
{
rb = srcrb.GetComponent<Rigidbody>();
}
void OnTriggerStay(Collider col)
{
if (col.tag == "ground") isGround = true;
}
void OnTriggerExit(Collider col)
{
if (col.tag == "ground") isGround = false;
}
void Update()
{
if (Input.GetButton("moveRight"))
{
transform.Translate(transform.right * speed);
}
if (Input.GetButton("moveLeft"))
{
transform.Translate(-transform.right * speed);
}
if (Input.GetButton("moveForward"))
{
transform.Translate(transform.forward * speed);
}
if (Input.GetButton("moveBack"))
{
transform.Translate(-transform.forward * speed);
}
if (Input.GetButton("Jump") && isGround)
{
print(rb);
}
}
}
Замените void start() на void Start().
Start у MonoBehaviour с большой буквы должен быть. Впрочем, по конвенции, все методы должны именоваться с большой буквы.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей