鼠标图标的替换问题

在指定条件下进行鼠标替换;
当要求在鼠标覆盖到游戏对象上时才会更改鼠标的图标,但是此时该物体上面挂载有多个collider,比如,一个游戏对象上挂载有一个charactercontroller,还有一个sphereCollider ,sphereCollider是触发器用来检测外来对象的进入,所以他的半径比较大,但是在使用OnMouseEnter()方法进行鼠标覆盖检测时,先被检测到的却是这个SphereCollider,如此就妨碍了鼠标图标的替换。我们可以想,在鼠标移动检测时将在该方法中将sphereCollider禁用掉,如果在鼠标检测时禁用某些collider又会使得,如果此时出现了其他对象进入触发圈那么就检测不到了,所以这种方法不可靠。可靠地方法是在OnMouseOver()中用射线检测判断检测到的collider是否是属于charactercontroller,如果属於则将鼠标图标替换即可,因为该函数是每帧执行的
下面附上代码:

using UnityEngine;
using System.Collections;

public class PhysicsRaycastHit : MonoBehaviour {
    public Texture2D cursor;
    public Texture2D cursor1;
    public bool isChange = false;
    public void OnMouseOver()
    {
        print("zhixing");
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit[] hit = Physics.RaycastAll(ray, 500f);
        foreach (RaycastHit item in hit)
        {
            if (isChange==false&& item.collider == transform.GetComponent<CharacterController>())
            {
                Cursor.SetCursor(cursor, Vector2.zero, CursorMode.Auto);
                print("成功");
                isChange = true;
            }
        }
    }

    public void OnMouseExit()
    {
        print("退出");
        Cursor.SetCursor(cursor1, Vector2.zero, CursorMode.Auto);
        isChange = false;
    }
	
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章