鼠标图标的替换问题

在指定条件下进行鼠标替换;
当要求在鼠标覆盖到游戏对象上时才会更改鼠标的图标,但是此时该物体上面挂载有多个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;
    }
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值