鼠标事件监听和鼠标事件应用

鼠标事件

//鼠标必须在Collider上,点击鼠标触发时间

private void OnMouseDown()

{

//鼠标按下

Debug.Log("鼠标按下");

}

private void OnMouseUp()

{

Debug.Log("鼠标抬起");

}

private void OnMouseDrag()

{

Debug.Log("鼠标拖拽");//就算鼠标离开物体也会一只调用 直到鼠标抬起

}

private void OnMouseEnter()

{

Debug.Log("鼠标移进");//只调用一次,进去的时候

}

private void OnMouseExit()

{

Debug.Log("鼠标移出");//也是只调一次,移出的时候

}

private void OnMouseOver()

{

Debug.Log("鼠标悬浮");//每帧都在调用

}

private void OnMouseUpAsButton()

{

Debug.Log("按下又抬起的时候调用");

}

//总结:当鼠标按下的时候,又抬起最先鼠标移进OnMouseEnter 先执OnMouseDown,再执行OnMouseUpAsButton,再执行OnMouseUp

例子 实现物体拖拽

Vector3 startPostion;//开始位置

Vector3 endPos;//结束位置

Vector3 offset;

private void OnMouseDown()

{

startPostion = MyScreenPointToWorldPoint(Input.mousePosition, transform);

}

private void OnMouseDrag()

{

endPos = MyScreenPointToWorldPoint(Input.mousePosition, transform);

offset = endPos - startPostion;

transform.position += offset;

startPostion = endPos;

}

Vector3 MyScreenPointToWorldPoint(Vector3 screenP, Transform tran) {

 

Vector3 dir = tran.position - Camera.main.transform.position;

Vector3 norDir = Vector3.Project(dir, Camera.main.transform.forward);

return Camera.main.ViewportToWorldPoint(new Vector3(screenP.x / Screen.width, screenP.y / Screen.height,norDir.magnitude ));

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bubblingo0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值