Efekt eksplozji

Do efektu wystrzału utworzonego w poprzednim temacie (zobacz) dodamy efekt eksplozji. Eksplozję oprzemy na systemie efektów cząstek (Particle System) w taki sam sposób jak zrobiliśmy dym przy wystrzale.

Tworzymy prefabrykat eksplozji

Obiekt prefabrykatu eksplozji utworzymy w dowolnym miejscu świata gry 3D poprzez osadzenie efektów cząstek (Particle System)

eksplozja efektów cząstek Particle System

Osadzonemu obiektowi przypisujemy nazwę na przykład eksplozja

eksplozja Unity

Ustalamy parametry i właściwości eksplozji

Przyjmujemy, że rozprysk odłamków będzie w pełnym kącie bryłowym, czyli w sferze. Za odłamki przyjmiemy siatkę dymy przygotowaną w poprzednim temacie. Materiał ustawimy na półprzezroczysty (Material: Default-Particle). Patrz poniższy rysunek.

Material: Default-Particle Particle System

Pozostałe efekty dobierz według swojego uznania. Na przykład ustawienie współczynnika grawitacji większego od zera spowoduje, że cząsteczki będą się zachowywać jak odłamki. Zmiana trybu emisji pozwoli w jednym momencie wystrzelić określoną ilość cząstek (tu ustawione jest 30 sztuk, patrz Emission/ Bursts)

Emission/ Bursts Particle System Unity

Ukierunkowanie wektor prędkości początkowej eksplozji ułatwiają opcje z grupy Velocity over Lifetime. Patrz poniższe ustawienia

Velocity over Lifetime Particle System Unity

Na tę chwilę system cząstek tworzących eksplozję zachowuje się jak poniżej

Velocity over Lifetime Particle System Unity

Brakuje efektów kolorów. Ustawiamy je według własnego uznania

Velocity over Lifetime Particle System Unity

Zerujemy współrzędne eksplozji i tworzymy prefabrykat.

Particle System Unity

W utworzonym prefabrykacie wyłączamy opcję powtarzalności (Looping)

Looping Particle System Unity

Modyfikujemy prefabrykat kuli

Eksplozję wywołamy w momencie detonacji pocisku. Dla kuli w świecie 3D będzie to moment zniszczenia obiektu. Napiszemy skrypt, który podepniemy do prefabrykatu kuli. W skrypcie utworzymy pole typu GameObject, do którego podepniemy prefabrykat eksplozji. Poniżej początkowa postac tworzonego skryptu

Wskazówka:


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Eksplozja : MonoBehaviour
{
    [SerializeField] private GameObject prefabEksplozja;
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

Podpinamy skrypt do prefabrykatu kuli oraz dodajemy prefabrykat eksplozji do utworzonego skryptu. Patrz poniższy rysunek krok 3 i 4.

prefab Particle System Unity

Aby eksplozja zadziałała musimy nadpisać standardową funkcję zniszczenia obiektu macierzystego- OnDestroy(), w tym przypadku kuli.

Nadpisujemy funkcję OnDestroy( )

Funkcja zniszczenia obiektu macierzystego (pocisku) może mieć wystąpienie wtedy gdy kula uderza w przeszkodę lub wybucha po określonym czasie. Dla efektu eksplozji nie ma to znaczenia. Poniżej rozwiązanie wywołania eksplozji po nadpisaniu funkcji OnDestroy

Wskazówka:


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Eksplozja : MonoBehaviour
{
    [SerializeField] private GameObject prefabEksplozja;
    
    private void OnDestroy()
    {
        //utwórz obiekt eksplozji
        GameObject e = Instantiate(prefabEksplozja,
                       transform.position,
                       transform.rotation);
        //usuń obiekt eksplozji
        Destroy(e, 2.5f);
    }
}

Uruchom scenę i sprawdź efekt działania

OnDestroy Particle System Unity

Prawidłowo działająca scena pozwoli zauważyć wybuchy wystrzelonych pocisków po upływie czasu ich życia na tworzonej scenie świata 3D

Alkomat- wirtualny test

Alkomat- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
Olinowanie stałe- kalkulator średnic

Olinowanie stałe- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
przepis na gogfry

Przepis na gofry

zobacz
przepis na bitą śmietanę

Przepis na bitą śmietanę

zobacz