【Unity】鼠标点选物体
2024-10-08 16:20:37
Camera cam;
void Start ()
{
cam =this.GetComponent<Camera>();
} void Update () {
if (Input.GetMouseButtonDown())
{
TarRaycast();
}
}
Vector3 mp ;//鼠标位置
Transform targetTransform;//点选的物体
public LayerMask targetingLayerMask;//指定射线能检测到的Layermask层
private float targetingRayLength = Mathf.Infinity;//射线的长度 public void TarRaycast()
{
targetingLayerMask.value = << ; //不懂的看最下边的几颗栗子~
mp = Input.mousePosition;
targetTransform = null;
if (cam != null)
{
RaycastHit hitInfo;
Ray ray = cam.ScreenPointToRay(new Vector3(mp.x, mp.y, 0f));
if (Physics.Raycast(ray.origin, ray.direction, out hitInfo, targetingRayLength, targetingLayerMask.value))
{
targetTransform = hitInfo.collider.transform;
}
}
//得到被点选的物体后,对其进行操作~
if (targetTransform != null)
{
Debug.Log(targetingLayerMask.value);
Debug.Log(targetTransform.name); }
}
}
关于LayerMask的使用,简单举个栗子~
:
1 << 10 打开第10层。
~(1 << 10) 打开除了第10之外的层。
~(1 << 0) 打开所有的层。
(1 << 10) | (1 << 8) 打开第10和第8的层。
<( ̄3 ̄)> 那么,说好的栗子呢!
最新文章
- SQL数据库索引查询
- 记录自己在使用Bootstrap中的心得
- 一、MyBatis简介与配置MyBatis+Spring+MySql
- EasyGUI基础教程
- hdu 1180 诡异的楼梯(广搜,简单)
- SGU 246. Black &; White(数论)
- 【LeetCode】225. Implement Stack using Queues
- (一一四)使用FMDB操作SQLite数据库
- Python Redis 的安装
- 既然CPU一次只能执行一个线程,那多线程存在的意义是什么?
- RSA算法加解密
- java四种权限修饰符(public >; protected >; (default) >; private)
- 开源性能测试工具Locust使用篇(三)
- [UE4]扔枪后捡枪:Get Overlapping Actors
- tp查询顺序
- 广州区块链系统or积分联盟
- 前端框架 vue 和 react 的区别
- python高级编程之列表推导式
- Anaconda快速加载opencv
- PAT 甲级 1063 Set Similarity