@GLaWA_RaKoB
Начинающий разработчик 2D игр на Unity.

Как включать и отключать Collider2D при помощи функции OnTriggerEnter2D/OnTriggerExit2D?

Здравствуйте!
Хочу сделать так что бы когда игрок входил/выходил в Trigger то включался/выключался Polygon Collider 2D написал Скрипт но всплывает ошибка CS1002 в 15 и 23 строчке, подскажите пожалуйста с чем это связано и как это исправить заранее спасибо!
Сам Скрипт:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TRUEFALSE : MonoBehaviour
{
    void OnTriggerEnter2D(Collider2D other)
    {
        if (other.tag == "Player")
        {
            Collider 2D = gameObject.GetComponent<PolygonCollider2D>;  /// CS1002
            PolygonCollider2D = false;
        }
    }
    void OnTriggerExit2D(Collider2D other)
    {
        if (other.tag == "Player")
        {
            Collider 2D = gameObject.GetComponent<PolygonCollider2D>; ///CS1002
            PolygonCollider2D = true;
        }
    }
}
  • Вопрос задан
  • 321 просмотр
Решения вопроса 2
B-Erolskiy
@B-Erolskiy
Unity Developer
Все довольно просто:

Рассмотрим данную строчку
Collider 2D = gameObject.GetComponent<PolygonCollider2D>;  /// CS1002

В ней содержатся следующие ошибки:
  • имя переменной не может начинаться с цифры. Имя переменной 2D не подходит
  • тип PolygonCollider2D не конвертится в тип Collider. Указывай тот же тип возвращаемого компонента, который ты хочешь получить методом GetComponent. В данном случае это PolygonCollider2D
  • ты не дописал скобки в конце вызова метода GetComponent


Других строчках тоже ошибки, но я не хочу их подробно комментировать - слишком много всего нужно пояснять, в интернете и книгах достаточно информации.

В итоге, замени текущие строки:
Collider 2D = gameObject.GetComponent<PolygonCollider2D>; ///CS1002
PolygonCollider2D = true;

На эту:
other.enabled = true;

Прям очень рекомендую обратиться к учебникам по Unity и C#, после прочтения первых глав любого нормального учебника этих ошибок возникать не должно.
Ответ написан
@GLaWA_RaKoB Автор вопроса
Начинающий разработчик 2D игр на Unity.
Ура все получилось если вдруг кому-нибудь понадобится:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TRUEFOLS : MonoBehaviour

{
void OnTriggerEnter2D(Collider2D other)
{
if (other.tag == "Player")
{
PolygonCollider2D coll = gameObject.GetComponent();
coll.enabled = false;
}
}
void OnTriggerExit2D(Collider2D other)
{
if (other.tag == "Player")
{
PolygonCollider2D coll = gameObject.GetComponent();
coll.enabled = true;
}
}
}

Назову это так Скрипт для отключение Коллайдера вместо PolygonCollider2D ставьте название нужного вам Коллайдера.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы