[RESOLU][DB-AL] OnCollisionEnter & Material

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
Répondre
Dast
Messages : 5
Inscription : 14 Sep 2018 09:17

[RESOLU][DB-AL] OnCollisionEnter & Material

Message par Dast » 17 Sep 2018 22:48

Bonjour à tous,

Je débute et je tente de développer un petit jeu vidéo pour me faire la main sur Unity, je cherche à faire un truc peut être simple mais je ne parviens pas à trouver une solution.

Description :
Un "joueur" tire des balles instanciée (utilisation d'unprefab) sur un autre objet (un cube, prefab aussi).
Quand l'objet instancié touche le cube, le material de l'objet instancié ce "copie" sur le cube.

J'ai réussi à faire cela, j'ai d'ailleurs fait un "Oooh Yeaaah" quand ça a fini par fonctionner :)
Le material se colle bien sur le cube, nickel !

Mais !!! :D

Petite particularité, le material du prefab des balles possède une couleur d'émission, qui elle ne se "réplique pas" ou ne fonctionne pas sur le/les objet(s) touché(s).
Voici le script qui est sur le prefab de ma balle:

Code : Tout sélectionner

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

public class BallTouch : MonoBehaviour {

    Material matBall;
    Renderer rendWall;

    void Start()
    {
        matBall = GetComponent<Renderer>().material;
    }

    private void OnCollisionEnter(Collision collision)
    {
        rendWall = collision.gameObject.GetComponent<Renderer>();
        rendWall.sharedMaterial = matBall;

        UnityEditor.GameObjectUtility.SetStaticEditorFlags(collision.gameObject, UnityEditor.StaticEditorFlags.LightmapStatic);
    }

}
Mes objets différents sont en "lightmap static"
Quand j'applique mon material sur un autre objet (cube) l’émission fonctionne et la lumière ce projette bien sur les autres objets.
Il existe peut être un moyen de forcer/activer l’émission de l'objet touché.

Sinon, j'ai vu pas mal de vidéo tutoriel sur le net notamment sur les Light Probes mais je ne sais pas si cela convient à ce que je veux faire. Les exemples que j'ai vu concernaient des objets existants où les surfaces d'émission ne bougeaient pas... donc je ne sais pas si ça conviendrait.

Merci par avance pour votre aide et de m'avoir lu jusqu'au bout :)
Dernière édition par Dast le 21 Sep 2018 16:49, édité 2 fois.

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: OnCollisionEnter & Material

Message par Alesk » 17 Sep 2018 23:14

Salut,

Tout ce qui concerne les light probes et les lightmaps est précalculé au moment de l'édition... pour ne justement pas avoir à les calculer durant l'exécution du jeu.

Donc là, comme ça, non je ne pense pas que tu pourras faire ça comme ça...

Mais normalement, si ton matériau a des paramètres en emission, ça devrait se répercuter sur tous les objets qui l'utilisent, peu importe que l'assignation soit faite sur le prefab, ou par un script comme tu le fais...

Tu pourrais nous montrer une image de ce que ça donne en indiquant où ça cloche ?

Avatar de l’utilisateur
Liven
Messages : 268
Inscription : 30 Nov 2017 01:48

Re: OnCollisionEnter & Material

Message par Liven » 18 Sep 2018 02:03

J'ai l'impression que le combo "lightmap static + Changement de couleur" n'est n'est pas adapté.

Avatar de l’utilisateur
Max
Messages : 8764
Inscription : 30 Juil 2011 13:57
Contact :

Re: OnCollisionEnter & Material

Message par Max » 18 Sep 2018 07:38

@Dast, en complément, attention dans ton code runtime, tu sembles employer des fonctions dédiées à l'éditeur, ce n'est pas vraiment prévu (comme le souligne la doc pour UnityEditor: It cannot be referenced by runtime code compiled into players.).
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Dast
Messages : 5
Inscription : 14 Sep 2018 09:17

Re: OnCollisionEnter & Material

Message par Dast » 18 Sep 2018 12:58

Merci pour vos réponses respectives.

@Max : Oui je conçois que c'est pas propre du tout (j'avoue c'était pour tenter de voir ce qui ne marchait pas), j'aurais du enlever cette ligne dans mon post elle n'apporte rien.

@Liven : Qu'entends-tu par changement de couleur ?

@Alesk : Voilà 2 photos (en pièces jointes):
- la première avant collision qui montre aussi un objet à droite avec le même material.
- la deuxième après collision, le plus gros cube devrait pour moi projeter la lumière sur le sol, comme le cube de droite.

Voili voilou ! :-D

[EDIT : les PJ ont pas l'air de fonctionner, je mets des liens]
Image
Image

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: [DB-AL] OnCollisionEnter & Material

Message par Alesk » 18 Sep 2018 14:36

Si l'éclairage projeté est pré-calculé dans le lightmap, tu n'auras jamais l'effet que tu veux.
... et je doute que ça soit possible comme ça.

Le plus simple serait d'associer une lampe avec chaque objet...

Dast
Messages : 5
Inscription : 14 Sep 2018 09:17

Re: [DB-AL] OnCollisionEnter & Material

Message par Dast » 19 Sep 2018 11:09

Alesk a écrit :
18 Sep 2018 14:36
Si l'éclairage projeté est pré-calculé dans le lightmap, tu n'auras jamais l'effet que tu veux.
Je comprends, l'effet que je veux à termes est un effet "glow".
Alesk a écrit :
18 Sep 2018 14:36
... et je doute que ça soit possible comme ça.
Je suis parfaitement conscient de mon niveau, donc existe t-il ou plutôt connaissez-vous des méthodes pour appliquer un material avec une émission par le code. Pensez-vous qu'un effet glow peut être fait avec des objets "lights" ? Et si oui, peut-on par le code ajouter des lumières à un objet et/ou les activer/éteindre ?

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: [DB-AL] OnCollisionEnter & Material

Message par Alesk » 19 Sep 2018 12:04

Si ce n'est que pour du glow, tu n'as pas besoin de light, juste de post processing et d'un matériau avec emission.
https://docs.unity3d.com/Manual/PostPro ... rview.html

Au niveau du script, il n'y a rien de spécial à faire en plus que ce que tu fais déjà pour assigner le matériau.

Dast
Messages : 5
Inscription : 14 Sep 2018 09:17

Re: [DB-AL] OnCollisionEnter & Material

Message par Dast » 21 Sep 2018 16:47

Merci à tous, j'vais m'orienter vers les lumières pour l'instant on verra bien le rendu :)
A+

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: [DB-AL] OnCollisionEnter & Material

Message par Alesk » 21 Sep 2018 16:48

les lumières ne feront PAS du glow ...

Répondre

Revenir vers « (C#) CSharp »