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 !!!
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);
}
}
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