Creare Videogiochi - Game Developer

Versione completa: Particles scintille proiettile
Al momento stai visualizzando i contenuti in una versione ridotta. Visualizza la versione completa e formattata.
Ciao a tutti ragazzi, sono nuovo, sto creando un gioco sparatutto, ma mi sono bloccato allo script dell'impatto del proiettile sulle varie superfici!

Stavo provando in pratica l'impatto del proiettile sulla superficie metallica di un barile, appena il proiettile impatta sul barile partono i particles cioè le scintille (come in tutti i giochi moderni). ecco il codice:

Codice:
using UnityEngine;
using System.Collections;

public class ImpattoProiettile : MonoBehaviour {
    public GameObject scintille = null;

    
    // Use this for initialization
    void Start () {
        
    }
    
    // Update is called once per frame
    void Update () {
        
    }
    
    void OnCollisionEnter(Collision collisione)
    {
        if (collisione.gameObject.tag == "barile")
            collisione.gameObject.transform.position += new Vector3 (0, 0.1F, 0);
        GameObject cloneScintille = (GameObject)Instantiate(scintille, collisione.transform.position, Quaternion.identity);
    }

}

ma riscontro 2 problemi. Il codice funziona e i particles partono solo se il proiettile impatta sull'oggetto con tag "barile", il problema numero uno e che quando sparo i particles partono anche da personaggio e non capisco perche, ogni sparo che faccio fa partire le scintille dall'arma ahah

Riuscite a scoprire per fa cosi? Io non l'ho capito!

Secondo, dato che dovrei inserire molti tag e di conseguenza vari particles per l'effetto scintille, tipo (muro, legno, sabbia), ho bisogno di inserire diversi IF, ma se lo faccio mi da errore e leggendo sul web ho capito che sbaglio la forma, sapreste aiutarmi anche questo? come inserirsco vari if?

tipo oltre al barile dovrebbe esserci un'altro if sotto questa forma:

Codice:
if (collisione.gameObject.tag == "muro")
            collisione.gameObject.transform.position += new Vector3 (0, 0.1F, 0);
        GameObject cloneScintilleMuro = (GameObject)Instantiate(scintillemuro, collisione.transform.position, Quaternion.identity);

Help!!! Grazie!
Ma le graffe?
Si, comunque devi applicare un tag diverso ad ogni oggetto a cui vuoi assegnare i particles... Quindi gli oggetti metallici = metal, il pavimento = concrete, i vetri = glass ecc Però con lo script in italiano non mi ci ritrovo :/

... Le graffe mi sembrano ok
(22-04-2015, 09:13 PM)eoasier Ha scritto: [ -> ]Si, comunque devi applicare un tag diverso ad ogni oggetto a cui vuoi assegnare i particles... Quindi gli oggetti metallici = metal, il pavimento = concrete, i vetri = glass ecc Però con lo script in italiano non mi ci ritrovo :/

... Le graffe mi sembrano ok

Si le graffe sono ok, si lo so che ci voglio vari tag, ahah però ce il problema che i particles mi compaiono pure sul personaggio! PErche?? ahah

e poi come si mettono vari if?
A me sembra che le graffe dell'if siano necessarie, e sul tuo script non ne vedo. Comunque se ho capito bene la tua richiesta più if li metti con 'else if'.
(23-04-2015, 11:25 AM)springofdajuwn Ha scritto: [ -> ]Comunque se ho capito bene la tua richiesta più if li metti con 'else if'.

Puoi farmi un'esempio?
Sinceramente non ho mai programmato in Unity, però la programmazione la conosco, quindi in base alle mie conoscenze farei così:
Codice:
using UnityEngine;
using System.Collections;

public class ImpattoProiettile : MonoBehaviour {
    public GameObject scintille = null;


    // Use this for initialization
    void Start () {

    }

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

    }

    void OnCollisionEnter(Collision collisione)
    {
        if (collisione.gameObject.tag == "barile")
        {
            collisione.gameObject.transform.position += new Vector3 (0, 0.1F, 0);
            GameObject cloneScintille = (GameObject)Instantiate(scintille, collisione.transform.position, Quaternion.identity);
        }
        else if (collisione.gameObject.tag == "muro")
        {
            collisione.gameObject.transform.position += new Vector3 (0, 0.1F, 0);
            GameObject cloneScintilleMuro = (GameObject)Instantiate(scintillemuro, collisione.transform.position, Quaternion.identity);
        }

    }

}

Non ti assicuro che questo codice sia corretto, però sto provando ad aiutarti Wink