@RokaQuoteXatab

Почему может не работать код?

Вот сам код и я не знаю почему он не работает, на камере есть Physics Raycaster и у оружия и у игрока один и тот же слой и у камеры тоже
using UnityEngine;

public class WeaponPickup : MonoBehaviour
{
    public GameObject weaponUI;
    public GameObject playerWeapon;
    public Camera playerCamera;

    private bool isWeaponPickedUp = false;
    private void Start()
    {
        weaponUI.SetActive(false);
    }

    private void Update()
    {
        if (!isWeaponPickedUp && playerCamera != null)
        {
            Ray ray = new Ray(playerCamera.transform.position, playerCamera.transform.forward);
            RaycastHit hit;

            if (Physics.Raycast(ray, out hit) && hit.collider.gameObject == gameObject)
            {
                weaponUI.SetActive(true);

                if (Input.GetKeyDown(KeyCode.E))
                {
                    weaponUI.SetActive(false);

                    playerWeapon.SetActive(true);

                    isWeaponPickedUp = true;
                }
            }
            else
            {
                weaponUI.SetActive(false);
            }
        }
    }
}
  • Вопрос задан
  • 66 просмотров
Пригласить эксперта
Ответы на вопрос 1
@MaxMaksimov
А в чем неработоспособность проявляется?
В данном коде вместо Update FixedUpdate используй лучше, физика в обычном Update может криво работать.
К слову я бы порекомендовал не использовать так setActive(), неоптимизированно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы