@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;
        }
    }
}
  • Вопрос задан
  • 267 просмотров
Решения вопроса 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 ставьте название нужного вам Коллайдера.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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