Переменная rb не существует в данном контексте
Переменная rb не существует в данном контексте, если написать перед rb слово public, то будет другая ошибка: Type or namespace defenition, or end-of-file expected. В первом случае ошибку вызывает строка rb.AddForce, а во втором фигурная скобка которая закрывает тело класса.
void Start()
{
public Rigidbody2D rb = gameObject.GetComponent<Rigidbody2D>();
}
void FixedUpdate()
{
RaycastHit2D hit = Physics2D.Raycast(transform.position, Vector2.up);
Debug.DrawRay(transform.position, Vector2.up*20, Color.white, 1, false);
if(hit.distance <= 15)
{
rb.AddForce(transform.position - hit.transform.position);
}
}
Ответы (1 шт):
Автор решения: NasIta Highborne
→ Ссылка
В данном примере идет попытка создания поля внутри метода, что, конечно же, непозволительно. Поля принадлежат классу, а не методу - методу принадлежат переменные.
Предлагаю вынести объявление поля в нужное ему место - над методом Start:
public Rigidbody2D rb;. А в самом методе оставить лишь присваивание:
rb = gameObject.GetComponent<Rigidbody2D>();
Тогда поле будет доступно в любом контексте: этого и других классов.