まず最初に car ゲームオブジェクトをヒエラルキーで選択して、インスペクターを確認します。
一番下に Add Component というボタンがありますので、そちらを選択します。
検索窓で Rigidbody2D を探してください。そのコンポーネントをアッドします。
このアッドする操作をスクリプトで行うようにします。
操作する内容がわかったら、アッドしたRigidbody2DをRemoveしてください。
課題としましては、キーボードの B を押した際に、car ゲームオブジェクトに、Rigidbody2Dコンポーネントがアタッチされていなければ新しく追加する、です。
ここもまずは car ゲームオブジェクトを探す必要があります。
ポイントは、「Rigidbody2Dコンポーネントがアタッチされていなければ」です。つまり、同じ操作を行った際には
2つ目のRigidbody2Dコンポーネントがアッドされないように制御をする必要があります。
ヒントのサイトです。
かめくめさま
https://gametukurikata.com/basic/addcomponent
成功動画 Debug.Logを使うと処理が分かりやすくなります。
https://gyazo.com/61e3903872f968c5f4c2e6179ed4381e
回答例(先ほどのスクリプトに追記しています)
<= クリックすると回答例が開きます。
TestController.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TestController : MonoBehaviour
{
private GameObject obj;
private Rigidbody2D rb;
void Start()
{
// ヒエラルキーにある "car" ゲームオブジェクトを探す
obj = GameObject.Find("car");
}
void Update()
{
// キーボードの B キーを押した際
if (Input.GetKeyDown(KeyCode.B)) {
// carゲームオブジェクトにRigidbody2dがアタッチされているか確認
rb = obj.GetComponent<Rigidbody2D>();
// アタッチされていなければ = すでにアタッチされていれば処理も行わない
if(rb == null){
// car ゲームオブジェクトに Rigidbody2Dを追加する
obj.AddComponent<Rigidbody2D>();
Debug.Log("コンポーネント追加");
}
}
}
}