Минус любая логика которая может быть....
Прикинь что ты позвонил автомеханику и сказал что твой трактор не едет, ты жмешь на педаль газа а он не едет, после такой "детальной инфы" автомеханик больше от тебя трубку возьмет.
Что вообще ты ожидаешь в данной ситуации получить ?
Покажи свой код, объясни как все должно работать, и мы с радостью тебе поможем
Геворг, изначально ошибка была в твоем вопросе, ты написал что тебе надо двигать дверь а не присвоить ей другую позицию, как написано в коде, и запутал всех, дальше, в каком методе ты вызываешь это условие ? Юзаешь ты триггер или нет ?
Данная проверка:
if (_hit.collider.GetComponent().type == ItemType.Door)
очень странная и большая, делай так:
if (_hit.collider.TryGetComponent(Door door) {
door.Open();
}
так тебе не надо лишний раз получать компонент двери
Привет, ты в коде никак не перемещаешь камеру, метод Mathf.MoveTowards только скейлит по сути камеру, что тебе надо:
1. Проверять в Update если колесо мыши изменилось
2. Найти координаты мыши на сцене
3. Через Rigidbody изменять позицию камеры
еще есть много замечаний по дизайну кода:
1. Всегда делай поля закрытыми, если надо что бы поле можно редактировать было в инспекторе то используй атрибут [SerializeField], также можно поле открыть только для чтения создав публичную переменную которая будет только возвращать значение приватной но не устанавливать какое либо значение в нее public float Speed {get{return _speed}}
2. Если компонент находится на одном и том же объекте что и скрипт который этот компонент получает то при старте кешируй его в переменную ( _camera = GetComponent)
3. Что бы не было ошибок при получения компонента которого нет на объекте то используй перед началом класса атрибут [RequireComponent(typeof(Component))]
private void Update()
{
if (Input.GetMouseButtonDown(0))
{
Ray rayHit = _inputCamera.ScreenPointToRay(new Vector3(Input.mousePosition.x, Input.mousePosition.y, Input.mousePosition.z));
RaycastHit raycastHit = new RaycastHit();
if (Physics.Raycast(rayHit, out raycastHit))
{
if (raycastHit.collider.CompareTag("ObjectTag"))
{
_userInterface.SetActive(true);
}
}
}
}
Здесь идет проверка на Тег объекта по которому нажимаем, но я бы рекомендовал делать проверку на компонент, т.к. если будет опечатка то VS сразу тебе подскажет об этом
Прикинь что ты позвонил автомеханику и сказал что твой трактор не едет, ты жмешь на педаль газа а он не едет, после такой "детальной инфы" автомеханик больше от тебя трубку возьмет.
Что вообще ты ожидаешь в данной ситуации получить ?
Покажи свой код, объясни как все должно работать, и мы с радостью тебе поможем