Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Object reference not set to an instance of an object unity

Николай Елизаров Знаток (329), на голосовании 5 месяцев назад
не могу передвигать объект в юнити как исправить?

скрипт:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class mouseInteraction : MonoBehaviour
{
public float force = 10;
public Rigidbody2D rg;
void Update()
{

if (Input.GetKey(KeyCode.Mouse0))
{
Vector2 dir = rg.position - (Vector2)Camera.main.ScreenToWorldPoint(Input.mousePosition);
rg.AddForce(-dir * force * Time.deltaTime);
}
}
}
Голосование за лучший ответ
Татьяна Просветленный (36374) 6 месяцев назад
Ошибка "Object reference not set to an instance of an object" указывает на то, что один из объектов, с которым вы пытаетесь взаимодействовать в Unity, не был инициализирован. В вашем случае, это скорее всего поле rg (Rigidbody2D), которое не было назначено в редакторе Unity.

Для исправления этой ошибки, нужно убедиться, что поле rg правильно назначено в инспекторе Unity. Вот как это сделать:

Убедитесь, что ваш объект имеет компонент Rigidbody2D.
Назначьте компонент Rigidbody2D в поле rg в инспекторе.
Также, рекомендуется инициализировать rg в методе Start, если вы хотите, чтобы это происходило автоматически.

 using System.Collections; 
using System.Collections.Generic;
using UnityEngine;

public class mouseInteraction : MonoBehaviour
{
public float force = 10;
private Rigidbody2D rg;

void Start()
{
rg = GetComponent();

if (rg == null)
{
Debug.LogError("Rigidbody2D component not found!");
}
}

void Update()
{
if (rg == null) return;

if (Input.GetKey(KeyCode.Mouse0))
{
Vector2 dir = rg.position - (Vector2)Camera.main.ScreenToWorldPoint(Input.mousePosition);
rg.AddForce(-dir * force * Time.deltaTime);
}
}
}
компонент Rigidbody2D инициализируется в методе Start, и если он не найден, выводится сообщение об ошибке в консоль. Это поможет вам убедиться, что компонент правильно назначен.
Похожие вопросы