只使用光线投射和鼠标点击改变一个游戏对象的材质



我创建了以下代码来查看我点击哪个游戏对象,但我找不到如何更改对象的材质,我只点击,它改变了所有具有脚本的对象的材质

//Public
public int TileGroup = 0; //Indicates the Tile Group Number.
//Private
public Rigidbody myRigidbody;
public Renderer myRenderer;
public Material tileDefaultMaterial;
public Material tileSelectedMaterial;
public Material tileSameGroupMaterial;
void Start () {
    myRigidbody = GetComponent<Rigidbody> ();
    myRenderer = GetComponent<Renderer> ();
    tileDefaultMaterial = Resources.Load ("TileDefault", typeof(Material)) as Material;
    tileSelectedMaterial = Resources.Load ("TileSelected", typeof(Material)) as Material;
    tileSameGroupMaterial = Resources.Load ("TileSameGroup", typeof(Material)) as Material;
}
void Update () {
    if (Input.GetMouseButtonDown (0)) {
        TileClick ();
    }
}
void TileClick (){
    RaycastHit hitInfo = new RaycastHit ();
    bool hit = Physics.Raycast (Camera.main.ScreenPointToRay (Input.mousePosition), out hitInfo);
    if (hit) {
        Debug.Log ("Hit: " + hitInfo.transform.gameObject.name);
    }
    if (hitInfo.transform.gameObject.tag == "Tile") {
        Debug.Log ("Hit a Tile!");
        myRenderer.material = tileSelectedMaterial;
    } else {
        Debug.Log ("Hit Empty Space!");
    }
}

当你在跑步

void Update()
{
    if(Input.GetMouseButtonDown(0))
    {
        TileClick();
    }
}

无论何时单击(无论在何处),Input.GetMouseButton(0)将在所有脚本实例中为真。所以你最终改变了所有物体的颜色。相反,您可以尝试OnMouseDown()方法。

void OnMouseDown() 
{
    TileClick();
}

相关内容

最新更新