在unity做一个烟花,附代码
时间: 2023-12-03 14:41:58 浏览: 35
以下是一个简单的 Unity 烟花实现的示例代码:
```csharp
using System.Collections;
using UnityEngine;
public class Firework : MonoBehaviour
{
public GameObject fireworkParticlePrefab;
public int maxParticles = 100;
public float explosionForce = 10f;
public float explosionRadius = 5f;
public float explosionDuration = 2f;
public float timeToExplode = 1f;
private bool exploded = false;
private void Update()
{
if (!exploded && Time.time >= timeToExplode)
{
Explode();
exploded = true;
}
}
private void Explode()
{
// Instantiate particle system
GameObject fireworkParticle = Instantiate(fireworkParticlePrefab, transform.position, Quaternion.identity);
// Get particles
ParticleSystem particleSystem = fireworkParticle.GetComponent<ParticleSystem>();
ParticleSystem.Particle[] particles = new ParticleSystem.Particle[maxParticles];
// Emit particles
int numParticles = particleSystem.GetParticles(particles);
for (int i = 0; i < numParticles; i++)
{
particles[i].velocity = Random.onUnitSphere * explosionForce;
}
particleSystem.SetParticles(particles, numParticles);
// Apply explosion force to nearby objects
Collider[] colliders = Physics.OverlapSphere(transform.position, explosionRadius);
foreach (Collider collider in colliders)
{
Rigidbody rb = collider.GetComponent<Rigidbody>();
if (rb != null)
{
rb.AddExplosionForce(explosionForce, transform.position, explosionRadius);
}
}
// Destroy particle system after duration
Destroy(fireworkParticle, explosionDuration);
}
}
```
这段代码创建了一个 `Firework` 脚本,用于在指定的时间点在场景中创建一个烟花效果。该脚本需要一个预制体,用于创建烟花粒子系统,以及一些参数,如最大粒子数、爆炸力度、爆炸半径、持续时间等。在 `Explode()` 方法中,该脚本实现了烟花效果的创建和爆炸力度的应用,以及随后的销毁粒子系统。在 `Update()` 方法中,该脚本检测是否到达指定的时间点,如果是,则执行 `Explode()` 方法来创建烟花效果。