As you can see in the image, as notes come on-screen they fade in. I’m trying to replicate the effect, and was wondering how it could be done. It needs to be position based as well, since the notes can move at varying speeds and I don’t want them to be halfway down the screen and still be fading in.
Place a script on your GameObject that alters the alpha of the object’s colour based on the distance from the camera. Steps along the lines of:
set maxDistance as the furthest an object can be away before it's completely transparent
set distance = Mathf.Min(Vector3.Distance(Camera.main.transform.position, transform.position), maxDistance)
set object colour alpha to 1 - (distance/maxDistance)
You can try this, I’m not sure if it works :
Raycast from the camera
Camera cam;
RaycastHit hitinfo;
float distance;
Layermask targetMask;
void Update(){
if(Physic.Raycast(cam.transform.position,cam.transform.forward,out hitinfo ,distance,targetMask)){
if(hitinfo.transform.Comparetag(“fadeObject”)){
hitInfo.Getcomponent().Fade();
}
}
}
This way works for me almost all the time
You could have a Color lerp on the material that is based on the distance of the object from the camera
Color color;
Color invis;
public GameObject object;
Renderer objectRenderer;
void Start(){
//Get object's renderer
objectRenderer = object.GetComponent<Renderer>();
//store the material's color
color = objectRenderer.material.color;
//copy the color for the invisible color value
invis = color;
//set the alpha to 0 in the new color value
ivis.a = 0;
//make the object invisible to begin with
objectRenderer.mater.color = invis;
}
void Update(){
//get the distance between the camera and the object, assuming object to be the GameObject of the object that fades in
float distance = (Camera.main.transform.position - object.transform.position).magnitude;
if(distance > 10){
//fade into the original color as the distance approaches 10 (assuming it started further away, and 10 being an arbitrary distance to check)
objectRenderer.material.color = Color.Lerp(invis, color, 10/distance);
}
}
I haven’t tested any of this, and this example assumes a lot of what it going on, and that there is something else controlling the movement of the object, but hopefully that puts you in the right direction