123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- using System;
- 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;
- // Use this for initialization
- 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);
- // remove any gameobjects added (fire, skid trails, etc)
- foreach (var t in GetComponentsInChildren<Transform>())
- {
- if (!originalStructure.Contains(t))
- {
- t.parent = null;
- }
- }
- transform.position = originalPosition;
- transform.rotation = originalRotation;
- if (Rigidbody)
- {
- Rigidbody.velocity = Vector3.zero;
- Rigidbody.angularVelocity = Vector3.zero;
- }
- SendMessage("Reset");
- }
- }
- }
|