• Benvenuto in Making Videogames!
  • Dai sfogo alla tua fantasia!
  • Crea il tuo Videogioco!
Benvenuto ospite! Login Registrati




Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5
Impatto proiettile foro.
#1
Ciao ragazzi, ho tirato giu lo script per far si che quando sparo su di un muro compare il prefab del foro. Ecco il codice:

Codice:
using UnityEngine;
using System.Collections;

public class ImpattoForo : MonoBehaviour {
    public GameObject foromuro = null;

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

Il problema è che l'immagine del foro mi compare in orizzontale e dentro all'oggetto stesso. e non sulla sua superficie.

Cosa ho sbagliato? Per favore aiutatemi! Grazie!
 
Rispondi
#2
Probabilmente il prefab è ruotato diversamente. Prova a correggerlo ruotandolo di 90 rispetto l'asse y
 
Rispondi
#3
(22-04-2015, 08:01 PM)Chip Ha scritto: Probabilmente il prefab è ruotato diversamente. Prova a correggerlo ruotandolo di 90 rispetto l'asse y

Ci provo, invece per farlo comparire sulla superficie?
 
Rispondi
#4
ora sono su cellulare non posso scrivere tanto ma del punto di collisione dovresti avere la proprietà "normal" che rappresenta la freccietta di valore 1 che spunta dalla superficie dell'oggetto e con cui puoi allineare il foro (si chiamano decal) . Il vettore moltiplicalo per 0,001 e sei sicuro che stia "sopra" l'oggetto colpito
 
Rispondi
#5
(22-04-2015, 09:23 PM)Chip Ha scritto: ora sono su cellulare non posso scrivere tanto ma del punto di collisione dovresti avere la proprietà "normal" che rappresenta la freccietta di valore 1 che spunta dalla superficie dell'oggetto e con cui puoi allineare il foro (si chiamano decal) . Il vettore moltiplicalo per 0,001 e sei sicuro che stia "sopra" l'oggetto colpito

ma dove dovrei metterla questa proprietà "normal"????
NEllo script oppure in unity?
 
Rispondi
#6
http://docs.unity3d.com/ScriptReference/...tacts.html
Ogni collisione ha un contactpoint e ogni contactpoint ha una sua normal .

Nell'istanziate dovresti mettere al posto della collisione.transform.position proprio la normale della collisione leggermente rialzata. Poi alla fine metti il quaterion che ti gira l'oggetto verso la normale che ti ripeto è rivolta in "fuori".

Instantiate(foromuro, collisione.point + (collisione.normal * 0.0001), Quaternion.LookRotaion(collisione.normal));


https://www.youtube.com/watch?v=QSIC_KB4hOQ
Qui a 4:34 si vede, lui usa il raycast per la collisione ma la sostanza non cambia è sempre un punto di collisione.
 
Rispondi
#7
(22-04-2015, 11:17 PM)Chip Ha scritto: Instantiate(foromuro, collisione.point + (collisione.normal * 0.0001), Quaternion.LookRotaion(collisione.normal));

Ho inserito il pezzo di script ch emi hai dato, quindi il codice è cosi:

Codice:
using UnityEngine;
using System.Collections;

public class ImpattoForo : MonoBehaviour {
    public GameObject foromuro = null;

    
    
    // Use this for initialization
    void Start () {
        
    }
    
    // Update is called once per frame
    void Update () {
        
    }
    
    void OnCollisionEnter(Collision collisione)
    {
        if (collisione.gameObject.tag == "muro")
            collisione.gameObject.transform.position += new Vector3 (0, 0F, 0);
        GameObject cloneForomuro = (GameObject)Instantiate(foromuro, collisione.point + (collisione.normal * 0.0001), Quaternion.LookRotaion(collisione.normal));
        Destroy (cloneForomuro, 2F);
        
    }
    
}

provato ma mi da persino errore in partenza! (ti allego l'immagine degli errori)
[Immagine: 9zpw5d.png]

Grazie! Aspetto una risposta!
 
Rispondi
#8
Ok appena arrivo a casa vediamo.. a vedo solo che "collisione" non è quello che pensavo fosse Big Grin
 
Rispondi
#9
(23-04-2015, 05:34 PM)Chip Ha scritto: Ok appena arrivo a casa vediamo.. a vedo solo che "collisione" non è quello che pensavo fosse Big Grin

aspetto tue notizie! gentilissimo!
 
Rispondi
#10
Come debug così riesci a vedere la freccia verde dove colpisce?

Codice:
void OnCollisionEnter(Collision collisione)
    {
        if (collisione.gameObject.tag == "muro")
        {// collisione con muro
            ContactPoint PuntoCollisione = collisione.contacts[0]; //riferimento alla collisione
            Quaternion ruota = Quaternion.FromToRotation(Vector3.up, PuntoCollisione.normal); //ruoto
            Vector3 pos = PuntoCollisione.point; //coordinate di collisione
            Debug.DrawRay(pos, collisione.normal, Color.green);
            
        }
    }
 
Rispondi
#11
(23-04-2015, 09:05 PM)Chip Ha scritto: Come debug così riesci a vedere la freccia verde dove colpisce?

Codice:
void OnCollisionEnter(Collision collisione)
    {
        if (collisione.gameObject.tag == "muro")
        {// collisione con muro
            ContactPoint PuntoCollisione = collisione.contacts[0]; //riferimento alla collisione
            Quaternion ruota = Quaternion.FromToRotation(Vector3.up, PuntoCollisione.normal); //ruoto
            Vector3 pos = PuntoCollisione.point; //coordinate di collisione
            Debug.DrawRay(pos, collisione.normal, Color.green);
            
        }
    }

se metto questo al posto di quello vecchio mi dice parsing error e non parte! Non ci sto capendo niente! ahah Tieni conto che io non sto usando i raycast eh!! uso proprio una sfera che usa la gravità come proiettile...forse sbaglio?
 
Rispondi
#12
Considera che sto scrivendo pezzetti di codice :-D Restiamo al tuo originale. il prefab del foro ha l'origine degli assi nel mezzo? Xche dicevi che il difetto era solo che compariva in mezzo..quindi è da ruotare e basta e casomai da alzare leggermente
 
Rispondi
  


Discussioni simili
Discussione Autore Risposte Letto Ultimo messaggio
  Rottura vetro o altri oggetti all'arrivo del proiettile nostopsocial 9 1,365 16-05-2015, 07:16 AM
Ultimo messaggio: Master Gabriel
  Particles scintille proiettile nostopsocial 6 1,069 23-04-2015, 04:53 PM
Ultimo messaggio: springofdajuwn

Vai al forum:


Browsing: 1 Ospite(i)