revival/game/Assets/Scripts/Traps/FallawayFloor.cs

63 lines
1.5 KiB
C#
Raw Normal View History

2021-03-05 17:24:50 +01:00
using System;
using System.Collections;
using System.Collections.Generic;
2021-03-10 18:41:09 +01:00
using UnityEditor;
using UnityEngine;
2021-03-10 18:41:09 +01:00
[RequireComponent(typeof(Rigidbody))]
public class FallawayFloor : MonoBehaviour
{
2021-03-02 20:47:28 +01:00
// Speed at which the object moves towards the ground.
public float speed;
2021-03-02 20:47:28 +01:00
// Time it takes for ogjecct to begin moving towards the ground.
public float fallAwayTime;
// Time taken for object to be destroyed.
public float destroyObjectTime;
public Material dissolve;
2021-03-10 18:41:09 +01:00
2021-03-05 17:24:50 +01:00
[SerializeField] private Renderer _renderer;
Rigidbody rb;
2021-03-10 18:41:09 +01:00
private Vector3 _initialPosition;
private void Start()
{
2021-03-02 20:47:28 +01:00
// Get Rigidbody component.
rb = GetComponent<Rigidbody>();
}
private void OnTriggerEnter(Collider other)
{
2021-03-05 17:24:50 +01:00
if (other.CompareTag("Player"))
{
2021-03-02 20:47:28 +01:00
// Start the Destroy floor coroutine and switch to the dissolve material.
StartCoroutine(DestroyFloor());
2021-03-10 18:41:09 +01:00
// _renderer.material = dissolve;
}
}
IEnumerator DestroyFloor()
{
2021-03-02 20:47:28 +01:00
// Take fallAwayTime, speed, and destroyObjectTime from editor and apply
yield return new WaitForSeconds(fallAwayTime);
2021-03-10 18:41:09 +01:00
rb.velocity = Vector3.down * speed;
2021-03-10 18:41:09 +01:00
2021-03-02 20:47:28 +01:00
yield return new WaitForSeconds(destroyObjectTime);
2021-03-10 18:41:09 +01:00
// Destroy(gameObject);
}
public void Reset()
{
transform.position = _initialPosition;
}
}
2021-03-10 18:41:09 +01:00
#if UNITY_EDITOR
public class FallawayFloorEditor : Editor
{
}
#endif