- Home /
Question by
abhi1abhisheksaha · 4 days ago ·
materialmaterial colormaterial renderersharedmaterial
How to check if two objects share the same material within an if statement?
Hi, sorry for noob question. But I am making a prototype where I need to know if two objects have the same material. If its true, I want to destroy the player object. I have used material, shared material but nothing worked. Here are my two scripts. One changes materials of the player. The other one changes the enemy material. using System.Collections; using System.Collections.Generic; using UnityEngine;
public class MaterialGiver : MonoBehaviour { public Material material; private Renderer playerRenderer;
// Start is called before the first frame update
void Start()
{
playerRenderer = GameObject.FindWithTag("Player").GetComponent<Renderer>();
playerRenderer.enabled = true;
}
// Update is called once per frame
void Update()
{
}
private void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
playerRenderer.sharedMaterial = material;
}
}
}
Now this next one : using System.Collections; using System.Collections.Generic; using UnityEngine;
public class MaterialChanger : MonoBehaviour { public Material[] material; Renderer myRenderer;
private float waitMinimumTime = 1;
private float waitMaximumTime = 5;
// Start is called before the first frame update
void Start()
{
myRenderer = GetComponent<Renderer>();
myRenderer.enabled = true;
myRenderer.sharedMaterial = material[0];
StartCoroutine(changecolor());
}
// Update is called once per frame
void Update()
{
}
IEnumerator changecolor()
{
float waitTime = Random.Range(waitMinimumTime, waitMaximumTime);
yield return new WaitForSeconds(waitTime);
myRenderer.sharedMaterial = material[Random.Range(0, 3)];
}
//This part does not work.
private void OnTriggerEnter(Collider other)
{
if (other.tag == "Player" && other.material == myRenderer.sharedMaterial)
{
Destroy(gameObject);
}
}
}
Comment