• 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
Controllare che avvenga una collisione in C#
#1
Ehmmmmm, ok è da stamattina che cerco, che provo, faccio debug, ma ancora niente...
Mi serve controllare che il giocatore collida con un oggetto, nela documentazione ufficiale ho trovato OnTriggerEnter e OnCollisionEnter ma non c'ho capito niente xD
Non è che qualcuno può spiegarmi che funzione devo usare o che comando devo scrivere dentro l'if?? xD
 
Rispondi
#2
devi aggiungere un overload del metodo OnCollisionEnter nel tuo script , in questo modo:
Codice:
void OncollisionEnter(Collision collision)
{
       Debug.Log("Avvenuta collisione con un oggetto !");
}

se invece vuoi controllare la collisione solo con un oggetto specifico puoi farlo tramite un check del tag, o del nome:
basta inserire sempre nel metodo OnCollisionEnter :
per il nome
Codice:
if (collision.gameobject.name == "nome dell oggetto specifico")
{
Debug.Log("collisione rilevata con l`oggetto");
}
per il tag :
Codice:
if (collision.gameobject.tag ==  "tag del tuo oggetto")
{
Debug.Log("collisione rilevata con l`oggetto");
}

poi dipende tutto da come hai impostato il progetto, per esempio io suddivido gli oggetti in tag e certi check (come questo) lo faccio tramite tag.

spero di essere stato utile, ciao.
 
Rispondi
#3
grazie mille, avevo provato a fare con i tag, il problema è che l'inizio del mio script è sviluppato nella funzione Update, e quando scrivo "OnCollisionEnter();" per saltare alla funzione OnCollisionEnter mi dà errore... Come risolvo questo??
 
Rispondi
#4
non devi richiamarlo, e` un overload e` chiamato da solo nell`update interno dell`engine
 
Rispondi
#5
quindi il codice dovrà essere così?
Codice:
void Update {
//codice
}
void OncollisionEnter(Collision collision)
{
//codice
}

grazie mille!! Big Grin
 
Rispondi
#6
up!
O sono io cretino, o è il mio Unity ._.
Non rileva alcuna collisione, nel debug non esce niente quando collido con l'oggetto... Ecco il codice:

Codice:
using UnityEngine;
using System.Collections;

public class Cassa : MonoBehaviour {
    public float coordy;
    // Use this for initialization
    void Start () {
    
    }
    
    // Update is called once per frame
    void Update () {
    coordy = GameObject.FindWithTag("Player").transform.position.y;
        if (coordy > 1.72)
            if (coordy < 1.78)
        {
            Debug.Log ("FineUpdate");
        }
    }
    void OnCollisionEnter (Collision collision) {
        if (collision.gameObject.tag == "Player")
            Debug.Log ("Fine OnCollisionEnter");
    }
}

Oh, e mi servirebbe sapere anche come utilizzare WaitForSecond!!
 
Rispondi
#7
HAi un collider o un rigidbody nel tuo gameobject ?
 
Rispondi
#8
nell'oggetto in cui metto lo script ho un collider, nell'altro no... l'altro oggetto è il First Person Controller che c'è di default su unity...
 
Rispondi
#9
che quindi ha un character controller giusto ?? (che e` un collider)
al posto di un Debug.Log prova a cambiare colore del materiale dopo la collisione, se non sbaglio la console stampa un solo certo numero di funzioni per ciclo, forse il problema e` quello
 
Rispondi
#10
prima di mettere il debug ho provato a distruggere l'oggetto con Destroy(gameObject) e non funzionava nemmeno, quindi il problema non è nel debug...
 
Rispondi
#11
attenzione che il metodo detroy lo devi usare cosi`
Codice:
Destroy(transform.gameobject)
 
Rispondi
#12
continua a non funzionare!!
 
Rispondi
  


Discussioni simili
Discussione Autore Risposte Letto Ultimo messaggio
  Qualche anima buona che mi dia una mano? fede040188 2 568 22-12-2014, 11:27 PM
Ultimo messaggio: Chip

Vai al forum:


Browsing: 1 Ospite(i)