鼠標圖標的替換問題

在指定條件下進行鼠標替換;
當要求在鼠標覆蓋到遊戲對象上時纔會更改鼠標的圖標,但是此時該物體上面掛載有多個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;
    }
	
}

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