Ошибка "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, и если он не найден, выводится сообщение об ошибке в консоль. Это поможет вам убедиться, что компонент правильно назначен.
скрипт:
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);
}
}
}