blob: d03a975fe4f37ea36d05fa0faf0be27e0d91f829 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
using UnityEngine;
public class BuildingDestructionHandler : MonoBehaviour
{
public bool shakeCamera;
public MeshRenderer mainMesh;
public ParticleSystem debrisParticles;
public ParticleSystem smokeParticles;
public AudioSource destructionSource;
public float destructionPitchRange = 0.2f;
private ParticleSystem.ShapeModule debrisShape;
private ParticleSystem.ShapeModule smokeShape;
private float debrisPlaytime = 5f;
private float debrisClock;
private void Awake()
{
debrisShape = debrisParticles.shape;
smokeShape = smokeParticles.shape;
}
private void OnEnable()
{
if (shakeCamera && (bool)CameraController.instance)
{
CameraController.instance.ShakePunch();
}
debrisParticles.transform.position = mainMesh.transform.position;
debrisParticles.transform.rotation = mainMesh.transform.rotation;
smokeParticles.transform.position = mainMesh.transform.position;
smokeParticles.transform.rotation = mainMesh.transform.rotation;
debrisShape.scale = mainMesh.localBounds.size;
debrisShape.position = mainMesh.localBounds.center;
smokeShape.scale = mainMesh.localBounds.size;
smokeShape.position = mainMesh.localBounds.center;
debrisClock = 0f;
debrisParticles.Play();
destructionSource.pitch = Random.Range(1f - destructionPitchRange, 1f + destructionPitchRange);
destructionSource.Play();
}
private void Update()
{
if (debrisParticles.isPlaying)
{
debrisClock += Time.deltaTime;
if (debrisClock >= debrisPlaytime)
{
debrisParticles.Pause();
}
}
}
}
|