не работает 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();
}
}