Некоторый контекст вокруг того, что вы пытаетесь сделать, отсутствует.Но я предполагаю, что вы создаете игру, в которой игрок прыгает на разных платформах, и они падают после того, как он касается их, а затем вы хотите, чтобы они появились снова.Несколько вещей, на которые следует обратить внимание: 1) Ваша функция возрождения просто вызывает исключение (поэтому нет смысла вызывать его).2) Как только функция Destroy запустится, больше ничего не запустится (возможно, поэтому она перестает работать через пару раз.
Вероятно, существуют лучшие подходы для достижения того, что вы пытаетесь сделать (без установки rb.isKinematic для false, чтобы включить гравитацию, например). Но чтобы ответить на ваш вопрос, не меняя слишком много кода, вы можете попробовать код, приведенный ниже. Это должно привести к падению платформы через 0,5 секунды и возвращению туда, где она былаСпустя 1,5 секунды. Если это не то, что вы ищете, пожалуйста, поделитесь дополнительной информацией о том, что вы пытаетесь сделать.
public class FallingPlatform : MonoBehaviour
{
private Rigidbody2D rb;
private Transform originalTransform;
// Use this for initialization
private void Start()
{
rb = GetComponent<Rigidbody2D>();
}
private void OnCollisionEnter2D(Collision2D col)
{
if (col.gameObject.name.Equals("Ellen"))
{
Invoke("DropPlatform", 0.5f);
respawn(gameObject, 2f);
}
}
private void InvokeRepeating(string v1, float v2)
{
throw new NotImplementedException();
}
private void respawn(GameObject gameObject, float v)
{
gameobject.transform.position = originalTransform.position
rb.isKinematic = true;
}
private void DropPlatform()
{
originalTransform = gameobject.transform;
rb.isKinematic = false;
}