翼度科技»论坛 编程开发 .net 查看内容

unity 射线特性测试

14

主题

14

帖子

42

积分

新手上路

Rank: 1

积分
42
 

 
上面方块分别添加
绿色 BoxCollider2D Rigidbody2D
黑色 BoxCollider Rigidbody
黄色 Rigidbody2D
蓝色 无
红色 BoxCollider2D
然后我们通过以下代码设置一条2d射线用来测试
  1. private LineRenderer line;
  2. Vector3 mousePos = Input.mousePosition;
  3. Vector3 screenToWorld = Camera.main.ScreenToWorldPoint(new Vector3(mousePos.x, mousePos.y, -Camera.main.transform.position.z));
  4. Ray2D ray = new Ray2D(screenToWorld, Vector2.up);
  5. Debug.DrawRay(ray.origin, ray.direction, Color.blue, 1.0f);
  6. RaycastHit2D info = Physics2D.Raycast(ray.origin, ray.direction, 0.1f);
  7. if (info.collider != null)//如果发生了碰撞
  8.     {
  9.      GameObject obj = info.collider.gameObject;
  10.      Debug.Log(obj.name);
  11.     }<br><br>
复制代码
结果是只有绿色和红色可以接收到碰撞
然后我们重新写一段3d射线用来新的测试
  1. Vector3 mousePos = Input.mousePosition;
  2. Vector3 screenToWorld = Camera.main.ScreenToWorldPoint(new Vector3(mousePos.x, mousePos.y, -Camera.main.transform.position.z - 0.5f));
  3. RaycastHit hit;
  4. Ray ray = new Ray(screenToWorld, Vector3.forward);
  5. Debug.DrawRay(ray.origin, ray.direction, Color.blue, 1.0f);
  6. if (Physics.Raycast(ray, out hit))
  7. {
  8.       Debug.Log(hit.collider.gameObject.name);
  9. }
复制代码
结果只有黑色可以检测到
 
特性1:2d射线只能检测2d碰撞体,同样3d射线只能检测3d碰撞体,射线只能对有对应有碰撞体的对象产生反馈
 
 
把复制一个3d黑色方块把z轴减小1个单位,然后把原3d黑色方块放大2.5倍,使得小方块在后方
将绿色的2d方块放大2倍置于红色2d方块之上
重复上面的射线操作

 
小的黑色方块无法被检测到, 红色方块无法被检测到
 
然后我们给大小黑色方块,绿色红色方块分别添加mask 8, 9
[code]// 2d部分RaycastHit2D info = Physics2D.Raycast(ray.origin, ray.direction, 0.1f, 1

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具