Включение / отключение скрипта в C # не работает - PullRequest
0 голосов
/ 14 февраля 2019

Итак, я разрабатывал 2D платформерную игру на C # и Unity, и как часть игры я разрабатывал бонусы.Один из них в непобедимости, поэтому, когда игрок сталкивается с игровым объектом, они не могут быть убиты в течение определенного периода времени.Я относительно новичок в Unity и C # и прочитал, что могу использовать «.enabled», чтобы включить / отключить внешний скрипт, который присоединен к тому же объекту.Однако, когда я активирую powerup, объект уничтожается, но если я сталкиваюсь с врагом или объектом, я все равно умираю.Может кто-нибудь увидеть, почему это происходит.

Ниже приведен сценарий, который я разработал.

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

public class InvincibilityPowerup : MonoBehaviour
{
    public int Duration = 15;

    void OnTriggerEnter2D(Collider2D coll)
    {
        if (coll.gameObject.tag == "Shield")
        {
            Destroy(GameObject.Find("Invincibility"));

            StartCoroutine("Invincible");
        }
    }
    IEnumerator Invincible()
    {
        Collision pIn = gameObject.GetComponent<Collision>();
        pIn.enabled = false;

        yield return new WaitForSeconds(Duration);

        pIn.enabled = true;

    }
}

1 Ответ

0 голосов
/ 14 февраля 2019

1) GameObject.Find здесь совершенно не нужно.Вы уже знаете, к какому объекту прилагается непобедимость: тот, к которому этот скрипт прикреплен

2) Collision pIn = gameObject.GetComponent<Collision>(); оба a) не делает то, что вы хотите (вы хотите получить ДРУГОЙ игровой объект!) б) все равно не работает (Collision не является компонентом, Collider есть)

3) вы уничтожаете this перед запуском сопрограммы, то есть ваша сопрограмма также уничтожается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...