Can't change color despite using .setColor
I have a game where paint arrows are being fired at an all white platform. The goal is to have the platform take on the color of the arrow but get slightly more opaque each time. In my debug log I notice that I do change the color property however the platform remains white. Below is the code I'm using to achieve this. I would like the platform to take on the arrow's color and turn more and more transparent with each hit before it disappears. How can I achieve this?
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class Platform : MonoBehaviour {
private int health = 5;
//Use the fadder to track how much the alpha channel should descrease on hit
private float fadder = 0.2f;
private Renderer rend;
// Use this for initialization
void Start () {
rend = this.gameObject.GetComponent<Renderer> ();
}
// Update is called once per frame
void Update () {
}
void OnCollisionEnter2D (Collision2D other)
{
if (other.gameObject.tag == "Paint") {
//Get a reference to the Paint's material
Renderer otherRend = other.gameObject.GetComponent<Renderer>();
//Create a slighlty more tranparent color
Color newColor = new Color (otherRend.material.color.r, otherRend.material.color.g,
otherRend.material.color.b, otherRend.material.color.a - fadder);
//Let the platform lose some of it's health
health--;
rend.material.color = Color.black;
//Let's set our platform's color to be the same as the new paint
Debug.Log (newColor);
rend.material.SetColor("_Color",
newColor);
fadder = fadder + 0.2f;
if (fadder > 1.0f) {
fadder = 0.2f;
}
Debug.Log (rend.material.color);
}
if (health <= 0) {
Destroy (gameObject);
}
}
}
Comment