42 lines
1.6 KiB
C#
42 lines
1.6 KiB
C#
using NavKeypad;
|
||
using UnityEngine;
|
||
|
||
public class PlaerRaycast : MonoBehaviour
|
||
{
|
||
[SerializeField] private Camera camera;
|
||
[SerializeField] private LayerMask layerMask;
|
||
[SerializeField] private float raycastDistance = 1f;
|
||
|
||
void Update()
|
||
{
|
||
if (Input.GetKeyDown(KeyCode.E))
|
||
{
|
||
RaycastHit hit;
|
||
|
||
if (Physics.Raycast(camera.transform.position, camera.transform.forward, out hit, raycastDistance, layerMask))
|
||
{
|
||
// Проверяем, попали ли в дверь (OpenableObject)
|
||
if (hit.collider.TryGetComponent(out OpenableObject openableObject))
|
||
{
|
||
if (openableObject.IsLockedByKeypad)
|
||
{
|
||
Debug.Log("Эта дверь открывается только через код!");
|
||
return; // Игнорируем нажатие E
|
||
}
|
||
Debug.Log("Взаимодействие с дверью");
|
||
openableObject.OpenOrClose();
|
||
}
|
||
// Проверяем, попали ли в кнопку замка (KeypadButton)
|
||
else if (hit.collider.TryGetComponent(out KeypadButton keypadButton))
|
||
{
|
||
Debug.Log("Нажата кнопка замка: " + keypadButton.name);
|
||
keypadButton.PressButton();
|
||
}
|
||
}
|
||
else
|
||
{
|
||
Debug.Log("Рейкаст не попал в объект");
|
||
}
|
||
}
|
||
}
|
||
} |