【Unity3D】学习笔记(第7记)射线碰撞检测

本文介绍了Unity3D中的射线检测,包括Raycast和Linecast两种方法。重点讲解了如何利用射线进行鼠标点击的物体选中和地图行走的碰撞检测,并讨论了如何避免射线被物体拦截的问题。同时提到了Linecast的应用,如防止相机穿墙和实现攻击碰撞检测。
摘要由CSDN通过智能技术生成

unity中关于射线的有一个非常重要的函数类Physcics类,该类有RaycastLinecast两种射线投射方式;第一种是以起点和射线方向为参数的投射,第二种是以起点和终点为参数的投射。既然是射线碰撞,那么被射物体必须有被碰撞组件(如BoxCollider等);下面是有关鼠标点击的射线碰撞检测(Raycast方式)(如:点物体选中,点地图行走)

Ray r = Camera.main.ScreenPointToRay(Input.mousePosition);//屏幕坐标设为射线目标位置
RaycastHit h; //射线碰撞信息
if(Physics.Raycast(r,out h,100,1<<LayerMask.NameToLayer("layer1")|1<<LayerMask.NameToLayer("layer2")))
{
  
	if(h.collider.CompareTag("Enemy"))//敌人
	{
		//如果碰撞的对象是Enemy。。。
	}
	if(h.collider.CompareTag ("Ground"))//地形
	{
		//如果碰撞的对象是Ground。。。
	}
}

第一行:从摄像机向鼠标点击的点发出一条射线;因为鼠标输入坐标其实就是在屏幕上的坐标,故使用ScreenPointToRay(“鼠标输入坐标”)即(屏幕坐标转射线目标位置)࿱

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值