43 lines
1.0 KiB
C#
43 lines
1.0 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public class WallHitParticles : MonoBehaviour
|
|
{
|
|
|
|
[SerializeField] private GameObject hitParticlesPrefab;
|
|
[SerializeField] private float minHitSpeed = 2f;
|
|
[SerializeField] private float destroyDelay = 2f;
|
|
|
|
private Rigidbody _rb;
|
|
private bool _hasHit = false;
|
|
|
|
private void Start()
|
|
{
|
|
_rb = GetComponent<Rigidbody>();
|
|
}
|
|
|
|
private void OnCollisionEnter(Collision collision)
|
|
{
|
|
if (_hasHit)
|
|
return;
|
|
|
|
if (collision.gameObject.CompareTag("Wall") == false)
|
|
return;
|
|
|
|
if (_rb.velocity.magnitude < minHitSpeed)
|
|
return;
|
|
|
|
_hasHit = true;
|
|
|
|
Vector3 hitPoint = collision.contacts[0].point;
|
|
Quaternion hitRotation =
|
|
Quaternion.LookRotation(collision.contacts[0].normal);
|
|
|
|
GameObject particles =
|
|
Instantiate(hitParticlesPrefab, hitPoint, hitRotation);
|
|
|
|
Destroy(particles, destroyDelay);
|
|
}
|
|
}
|