1
resposta

Rigidbody2D' does not contain a definition for 'addForce' and no accessible extension method 'addForce' accepting a first argument of type 'Rigidbody2D' could be found

Estou tentando prosseguir com o curso de Unity 2d mas n consigo compilar o seguinte codigo:

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

public class aviao_Queda : MonoBehaviour { Rigidbody2D fisica;

private void Awake()
{
    this.fisica = this.GetComponent<Rigidbody2D>();
}

private void Update() {
    if(Input.GetButtonDown("Fire1"))
    {
        this.Impulsionar();
    }
}

private void Impulsionar()
{
    this.fisica.addForce(Vector2.up * 10, ForceMode2D.Impulse);
}

}

Aparece a seguinte mensagem: Assets\scripts\aviao_Queda.cs(22,21): error CS1061: 'Rigidbody2D' does not contain a definition for 'addForce' and no accessible extension method 'addForce' accepting a first argument of type 'Rigidbody2D' could be found (are you missing a using directive or an assembly reference?)

Poderiam me apontar no que estou errando?

1 resposta

Olá, Pietro!

Percebo que você está se esforçando bastante no curso de Unity 2D, isso é muito bom! Vamos tentar resolver essa questão juntos.

O erro que você está enfrentando é comum e está relacionado com a maneira como você está chamando o método 'AddForce'. Em C#, a convenção de nomenclatura para métodos é usar a chamada CamelCase, onde a primeira letra de cada palavra é maiúscula.

No seu código, você está chamando 'addForce', quando deveria ser 'AddForce'. A diferença pode parecer pequena, mas é o suficiente para o compilador não reconhecer o método que você está tentando chamar.

Então, o trecho do seu código que está causando o problema:

this.fisica.addForce(Vector2.up * 10, ForceMode2D.Impulse);

Deve ser alterado para:

this.fisica.AddForce(Vector2.up * 10, ForceMode2D.Impulse);

Com essa alteração, o compilador deve ser capaz de encontrar a definição do método 'AddForce' e seu código deve compilar corretamente.

Espero ter ajudado e bons estudos!