@miicccha

Скрипт открывания двери не работает что делать?

Переписываю код из книги: Unity в действии 3 издание
а IDE и Unity выдаёт ошибку :
Ошибка CS1061 "Collider[]" не содержит определения "SendMessage", и не удалось найти доступный метод расширения "SendMessage", принимающий тип "Collider[]" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).

Код открывания двери:
public class DoorOpenDevice : MonoBehaviour
{
    [SerializeField] Vector3 dPos;

    private bool open;

    public void Operate() 
    {
        if (open) 
        {
            Vector3 pos = transform.position - dPos;
            transform.position = pos;
        }

        else
        {
            Vector3 pos = transform.position + dPos;
            transform.position = pos;
        }
        open = !open;
    }

}

Активация предыдущего кода, цепляю на игрока
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DeviceOperator : MonoBehaviour
{
    public float radius = 1.5f;
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.C))
        {
            Collider[] hitColliders = Physics.OverlapSphere(transform.position, radius);

            foreach (Collider hitcollider in hitColliders) 
            {
                hitColliders.SendMessage("Operate",SendMessageOptions.DontRequireReceiver);
            }
        }
    }
}
  • Вопрос задан
  • 119 просмотров
Решения вопроса 1
GavriKos
@GavriKos Куратор тега Разработка игр
Ну невнимательно переписали скорее всего, либо в книге ошибка. Сравните посимвольно. А вообще не надо переписывать. Код надо разбирать и думать что в нем написано.

В ошибке явно написано что не так - вы пытаетесь у hitColliders вызвать SendMessage, а этого метода нет у МАССИВА коллайдеров. А вот у 1 коллайдера он скорее всего есть.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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