Измените переменную другого скрипта и уничтожьте GameObject Unity c # - PullRequest
0 голосов
/ 24 сентября 2019

В моей платформенной игре я только что добавил несколько контрольных точек, так что, если игрок умирает, не обязательно появляется в начале трека.

Это сценарий, который CheckPoint GameObject имеет:

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

public class CheckPoints : MonoBehaviour
{
    [SerializeField] private Grounded game;

    void Update()
    {
        transform.Rotate(0, 0, 5);
    }

    private void OnTriggerEnter() {
        game.updatedCheckPointPosition = transform.position;
        Destroy(this);
    }
}

То, что я безуспешно пытался сделать, это установить переменную public float скрипта Grounded в текущую позициюсамой CheckPoint, которая должна быть уничтожена после этого.

Любая информация или помощь о том, как это сделать, действительно приветствуется.

1 Ответ

1 голос
/ 24 сентября 2019

С Destroy

Объект obj будет уничтожен сейчас или если время указано t секунд с этого момента.

  • Если obj является Component, он удалит компонент из GameObject и уничтожит его.
    [Но оставьте остальную часть GameObject без изменений!]

  • Если obj равно GameObject, это уничтожит GameObject, всеего компоненты и все преобразуют потомки GameObject.

this относится к соответствующему экземпляру компонента.Что вам нужно, так это

Destroy(gameObject);

OnTriggerEnter, для работы необходим параметр типа Collider

private void OnTriggerEnter(Collider other) 
{
    game.updatedCheckPointPosition = transform.position;
    Destroy(this);
}

Обратите внимание, чтотаким образом, вокруг игрока должен быть триггер , тогда как контрольная точка a не триггер !На самом деле, я бы предпочел сделать это наоборот и сделать точку пересечения триггером и позволить объекту игрока проверять наличие OnTriggerEnter.

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