TransWikia.com

Скрипт не видит rigidbody

Stack Overflow на русском Asked by Mirlin on December 19, 2020

Делаю скрипт для перемещения персонажа по урокам в интернете. Застрял на моменте прыжка. 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);  
        }

    }
}

One Answer

Замените void start() на void Start().

Start у MonoBehaviour с большой буквы должен быть. Впрочем, по конвенции, все методы должны именоваться с большой буквы.

Answered by Suvitruf - Andrei Apanasik on December 19, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP