Files
Fishing2/Assets/UnityStandardAssets/Utility/ObjectResetter.cs
2025-05-10 12:49:47 +08:00

52 lines
1.2 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace UnityStandardAssets.Utility
{
public class ObjectResetter : MonoBehaviour
{
private Vector3 originalPosition;
private Quaternion originalRotation;
private List<Transform> originalStructure;
private Rigidbody Rigidbody;
private void Start()
{
originalStructure = new List<Transform>(GetComponentsInChildren<Transform>());
originalPosition = transform.position;
originalRotation = transform.rotation;
Rigidbody = GetComponent<Rigidbody>();
}
public void DelayedReset(float delay)
{
StartCoroutine(ResetCoroutine(delay));
}
public IEnumerator ResetCoroutine(float delay)
{
yield return new WaitForSeconds(delay);
Transform[] componentsInChildren = GetComponentsInChildren<Transform>();
foreach (Transform transform in componentsInChildren)
{
if (!originalStructure.Contains(transform))
{
transform.parent = null;
}
}
this.transform.position = originalPosition;
this.transform.rotation = originalRotation;
if ((bool)Rigidbody)
{
Rigidbody.linearVelocity = Vector3.zero;
Rigidbody.angularVelocity = Vector3.zero;
}
SendMessage("Reset");
}
}
}