- Home /
Question by
brianagreally · Jun 15, 2018 at 12:09 AM ·
raycastraycastingonmouseoverhovercs
Hello! I'm trying to make it so when i hover over a GameObject (TV), it affects other GameObjects' textures.
I'm a beginner, but I have some code that makes text appear over the TV when the player hovers over it. (below). It actually makes the text appear when ANY object is being hovered over but I've sidestepped the issue by putting the other objects in my game in the 'ignore raycast' layer.
So what I want is the text to appear when hovering over the TV, AND the walls to change texture at the same time. To clarify, I don't want the textures of the walls to change when I'm hovering over the WALLS, I want the textures to change when I'm hovering over the TV. Is this even possible? I don't know really what I'm doing but I've tried googling and such and I can't seem to find anything.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class MouseOver : MonoBehaviour {
public string myString;
private Text myText;
public float fadeTime;
private bool displayInfo;
public GameObject hoveredGO;
public enum HoverState{HOVER, NONE};
public HoverState hover_state = HoverState.NONE;
// Use this for initialization
void Start () {
myText = GameObject.Find ("Text").GetComponent<Text> ();
myText.color = Color.clear;
//Screen.showCursor = false;
//Screen.lockCursor = true;
}
void Update () {
FadeText ();
RaycastHit hitInfo = new RaycastHit();
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
//WHEN MOUSE ENTERS
if(Physics.Raycast(ray, out hitInfo)){
if(hover_state == HoverState.NONE){
hitInfo.collider.SendMessage("OnMouseEnter", SendMessageOptions.DontRequireReceiver);
hoveredGO = hitInfo.collider.gameObject;
}
hover_state = HoverState.HOVER;
}
//WHEN MOUSE EXITS
else{
if(hover_state == HoverState.HOVER){
hoveredGO.SendMessage("OnMouseExit", SendMessageOptions.DontRequireReceiver);
displayInfo = false;
}
hover_state = HoverState.NONE;
}
//WHEN MOUSE IS HOVERING
if(hover_state == HoverState.HOVER){
hitInfo.collider.SendMessage("OnMouseOver", SendMessageOptions.DontRequireReceiver); //Mouse is hovering
displayInfo = true;
}
}
void FadeText() {
if(displayInfo){
myText.text = myString;
myText.color = Color.Lerp (myText.color, Color.white, fadeTime * Time.deltaTime);
}
else {
myText.color = Color.Lerp (myText.color, Color.clear, fadeTime * Time.deltaTime);
}
}
}
,
Comment