не работает GetComponent<>()

Вызываю GetComponent и пытаюсь получить значение из определенного скрипта когда рейкаст касается ресурса то пытается получить его значение айди из класса Resource

вот код рейкаста

if (Input.GetButtonDown("Fire1"))
        {
            RaycastHit hit;
            Ray ray = new Ray(camera.transform.position, camera.transform.forward);
            Physics.Raycast(ray, out hit);
            Debug.DrawRay(camera.transform.position, camera.transform.forward);

            if(hit.collider)
            {
                hit.collider.gameObject.GetComponent<Resource>().Loot();
            }
        }

вот код ресурса

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

public class Resource : MonoBehaviour
{
    public int ID;

    public void Loot()
    {
        Debug.Log("ДОБЫЛ");
    }
}

Ответы (1 шт):

Автор решения: Nickolay Chistov

Скорее всего проблема в том что:

  • Сценарий называется не Resource

    или

  • Вы не присоединили его к коллайдеру объекта

также лучше присоединить сценарий не к коллайдеру, а к самому объекту, тогда нужен вот такой код:

if (Input.GetButtonDown("Fire1"))
        {
            RaycastHit hit;
            Ray ray = new Ray(camera.transform.position, camera.transform.forward);
            Physics.Raycast(ray, out hit);
            Debug.DrawRay(camera.transform.position, camera.transform.forward);
            Resource behaviour = hit.transform.gameObject.GetComponent<Resource>();
            if (behaviour != null) {
                behaviour.Loot();
            }
        }
→ Ссылка