mirror of
https://github.com/nothke/quality-control.git
synced 2025-08-08 23:03:43 +00:00
Added more prefabs
This commit is contained in:
3
Assets/Scripts/Machines.meta
Normal file
3
Assets/Scripts/Machines.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: dff77f06996a4ff1942273ccf704d6f1
|
||||
timeCreated: 1723917395
|
92
Assets/Scripts/Machines/TrashBin.cs
Normal file
92
Assets/Scripts/Machines/TrashBin.cs
Normal file
@@ -0,0 +1,92 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class TrashBin : MonoBehaviour
|
||||
{
|
||||
public float CooldownDuration;
|
||||
private float _cooldownTimer;
|
||||
|
||||
private float _incinerationTimer = 1f;
|
||||
public float IncinerationDuration = 1f;
|
||||
|
||||
public float doorVelocity = 5f;
|
||||
public Transform DoorTransform;
|
||||
public Transform OpenAnchor;
|
||||
public Transform ClosedAnchor;
|
||||
private Vector3 _targetPosition;
|
||||
|
||||
List<Product> enteredProducts = new List<Product>();
|
||||
|
||||
public void Start()
|
||||
{
|
||||
_targetPosition = OpenAnchor.position;
|
||||
}
|
||||
|
||||
public void OnTriggerEnter(Collider otherCollider)
|
||||
{
|
||||
var rb = otherCollider.GetComponent<Rigidbody>();
|
||||
|
||||
if (!rb)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (otherCollider.TryGetComponent(out Product product))
|
||||
{
|
||||
if (!enteredProducts.Contains(product))
|
||||
{
|
||||
enteredProducts.Add(product);
|
||||
}
|
||||
|
||||
_cooldownTimer = CooldownDuration;
|
||||
_targetPosition = ClosedAnchor.position;
|
||||
}
|
||||
else
|
||||
{
|
||||
rb.AddForce(5f * Vector3.up);
|
||||
}
|
||||
}
|
||||
|
||||
public void OnTriggerExit(Collider collider)
|
||||
{
|
||||
if (collider.TryGetComponent(out Product product))
|
||||
{
|
||||
if (enteredProducts.Contains(product))
|
||||
{
|
||||
enteredProducts.Remove(product);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
DoorTransform.position = Vector3.Lerp(
|
||||
DoorTransform.position,
|
||||
_targetPosition,
|
||||
Time.deltaTime * doorVelocity);
|
||||
|
||||
if (_cooldownTimer <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_cooldownTimer -= Time.deltaTime;
|
||||
_incinerationTimer -= Time.deltaTime;
|
||||
|
||||
if (_incinerationTimer <= 0)
|
||||
{
|
||||
foreach (var product in enteredProducts)
|
||||
{
|
||||
Destroy(product.gameObject);
|
||||
}
|
||||
|
||||
enteredProducts.Clear();
|
||||
_incinerationTimer = IncinerationDuration;
|
||||
}
|
||||
|
||||
if (_cooldownTimer <= 0)
|
||||
{
|
||||
_targetPosition = OpenAnchor.position;
|
||||
}
|
||||
}
|
||||
}
|
3
Assets/Scripts/Machines/TrashBin.cs.meta
Normal file
3
Assets/Scripts/Machines/TrashBin.cs.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 46eefd3f602b47379d40397411611b9b
|
||||
timeCreated: 1723917379
|
@@ -1,6 +1,6 @@
|
||||
using UnityEngine;
|
||||
|
||||
public class DefectiveProduct : MonoBehaviour
|
||||
public class DefectiveProduct : Product
|
||||
{
|
||||
|
||||
}
|
6
Assets/Scripts/Products/Product.cs
Normal file
6
Assets/Scripts/Products/Product.cs
Normal file
@@ -0,0 +1,6 @@
|
||||
using UnityEngine;
|
||||
|
||||
public class Product : MonoBehaviour
|
||||
{
|
||||
|
||||
}
|
3
Assets/Scripts/Products/Product.cs.meta
Normal file
3
Assets/Scripts/Products/Product.cs.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 813c296fdd6145aeaa5dfd4a2b2ca423
|
||||
timeCreated: 1723917512
|
Reference in New Issue
Block a user