Unity---2d射线检测

这篇具有很好参考价值的文章主要介绍了Unity---2d射线检测。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.目标物体加对应的collider碰撞体

 2.调节ProjectSetting里的time 帧速

3.LayerMask设置

4.避坑代码


1.目标物体加对应的collider碰撞体

Unity---2d射线检测

 2.调节ProjectSetting里的time 帧速

⚠️按需使用

Unity---2d射线检测

3.LayerMask设置

Layers通常被摄像机用来渲染部分场景,和灯光照射部分场景使用。但是它们也可以用来做射线检测时忽略一些collider或Collision使用。

在代码中使用时如何开启某个Layers?

LayerMask mask = 1 << 你需要开启的Layers层。
LayerMask mask = 0 << 你需要关闭的Layers层。

比如:
LayerMask mask = 1 << 2; 表示开启Layer2。
LayerMask mask = 0 << 5;表示关闭Layer5。
LayerMask mask = 1<<2|1<<8;表示开启Layer2和Layer8。
LayerMask mask = 0<<3|0<<7;表示关闭Layer3和Layer7。

上面也可以写成:
LayerMask mask = ~(1<<3|1<<7);表示关闭Layer3和Layer7。
LayerMask mask = 1<<2|0<<4;表示开启Layer2并且同时关闭Layer4.

4.避坑代码

⚠️注意:相机需要设置为正交模式文章来源地址https://www.toymoban.com/news/detail-510470.html

using UnityEngine;

public class XXXContr : MonoBehaviour
{
    RaycastHit2D hit;
    private Transform hitObj;
   

    private void Awake()
    {
        
    }


    void Start()
    {

    }

    private void OnMouseDown()
    {
        Debug.LogError("down");

    }
    private void OnMouseDrag()
    {
        
    }
    private void OnMouseUp()
    {
        SetTableState(false);
    }

    private void FixedUpdate()
    {
        if (isMove)
        {
            //2d射线检测需要指定参与碰撞的layer 并且添加射线长度,否则会失效
            LayerMask layer = 1 << 8;
            hit = Physics2D.Raycast(_camera.ScreenToWorldPoint(Input.mousePosition), Vector2.zero, 100f, layer);
            Debug.DrawLine(Input.mousePosition, hit.point, Color.black);
            if (hit.collider != null)
            {
                hitObj = hit.transform;
                //Debug.LogError("------" + hitObj.tag + "------");
                //注意上调参与点击的spriteRender的z轴 使其距离摄像机更近,否则可能会被其他碰撞体盖住 影响点击响应
                transform.position = new Vector3(offsetX, offsetY, -5);
            }
        }
    }

  

    private void OnTriggerEnter2D(Collider2D collision)
    {
        //Debug.LogError("trigger:" + collision.tag);
    }

    private void OnTriggerExit2D(Collider2D collision)
    {
        //Debug.LogError("Exit:" + collision.tag);
    }
}

到了这里,关于Unity---2d射线检测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 10.Unity2D 横版 简单AI 之 敌人随机移动+自动巡逻+障碍物跳跃+悬崖处转身+射线检测

    总目录 9.Unity2D 简单AI 之 敌人跳跃条件优化+自动范围内检测敌人发起攻击(索敌)+对象池优化+主角受伤死亡_ζั͡ ั͡雾 ั͡狼 ั͡✾的博客-CSDN博客 Unity2D 简单AI 之 敌人跳跃条件优化+自动范围内检测敌人攻击+敌人二连击。在敌人预制体下,创建空物体EnemyCanAttack,改成不

    2023年04月20日
    浏览(51)
  • unity 2D射线的使用方法

    Ray2D ray;     void Update()     {         ray = new Ray2D(transform.position, Vector2.right);         RaycastHit2D info = Physics2D.Raycast(ray.origin, ray.direction,10);         //Debug.DrawRay(ray.origin,ray.direction,Color.blue);         if (info.collider != null)         {             if (info.transform.gameO

    2024年02月15日
    浏览(46)
  • Unity-Pico高级开发(一)按键状态获取,射线碰到物体变色,射线末端小圆点

    目录 效果展示 前言 获取按键状态 射线碰到物体变色 射线末端小圆点 Unity-Pico高级开发(一)按键状态获取,射线碰到物体     picoXR为Unity提供的Unity XR SDK是基于Unity XR实现的各个功能,针对手柄和头盔的各个按键摇杆事件的获取,均是采用的Unity XR提供的方法。目前UnityXR只

    2024年04月28日
    浏览(123)
  • Ue4用射线检测来将点击的物体显示UI

    给actor打上tag,首先射线检测到actor,获得他的tag,根据tag创建一个actor,创建的这个actor跟一个widget绑定。创建的actor中需要获取到要显示的widget,并将需要显示的信息text传给widget,widget根据传入的值来改变显示的信息。 1.将actor打上tag 2.根据hit到的actor的tag,传入信息,并确

    2024年02月10日
    浏览(50)
  • Unity实现摄像机向屏幕中间发射射线射击物体

    外部找个PNG透明图,拖到Unity文件夹,右上角改成精灵sprite2d 2.添加到UI画布   3.写脚本 首先,我们需要引入一些 \\\"工具\\\",就像我们在玩游戏时要先下载游戏客户端一样。这里的 \\\"工具\\\" 就是一些命名空间,让我们可以方便地使用 System 和 UnityEngine 类。 🔧 接下来,我们创建了

    2024年02月08日
    浏览(43)
  • Unity之OpenXR+XR Interaction Toolkit实现 射线和物体交互事件回调

    前面我们介绍了如何抓取物体,今天我们来说一下如何和3D的物体进行交互,得到接触的事件回调。 交互的两种方式: 1.直接抓取或者射线抓取物体,得到接触回调 2.射线或者手部触摸物体后,得到接触回调 我们需要准备好Unity工程和环境配置 有了前文:Unity之OpenXR+XR Inter

    2024年02月13日
    浏览(82)
  • 【虚幻引擎UE】UE4/UE5 基于2D屏幕坐标获取场景3D坐标 射线检测(蓝图/C++)

    射线检测(Ray Casting) 是一种计算机图形和计算机图形学中的基本技术,用于检测光线或射线是否与三维场景中的物体相交,以确定相交点的位置和其他相关信息。射线检测通常用于实现各种交互功能、渲染效果和物理模拟,包括但不限于鼠标拾取、光线追踪、碰撞检测和物

    2024年02月07日
    浏览(121)
  • Unity 的射线检测

    Unity版本2020.3.32f1c1 目录 Ray RaycastHit Physics.Raycast() RaycastHit[]   Layer 应用 1.对Bad层级的物体进行着色 2.从相机发射射线与地面进行射线交互 3.运动的物体在场景中进行避障 总结 参考资料 原理是发射一条射线,传入起始点和起始方向当做射线的起点和方向。 在OnDrawGizmos()函数中

    2024年02月07日
    浏览(43)
  • Unity 射线检测

    在Unity中,射线检测(Raycasting)是一种常用的技术,用于检测射线是否与场景中的物体相交。这在游戏开发中用于实现点击物体、射线武器的碰撞检测、角色与环境的交互等方面非常有用。 定义:表示从一个点沿着特定方向延伸的虚拟线段 属性: direction 射线的方向。 orig

    2024年02月13日
    浏览(45)
  • Unity之射线检测

    目录 📕一、射线检测原理 📕1.2、实现实例  📕二、导航 📕2.1 导航网格的使用 📕2.2 创建角色,在地形上移动 📕2.3 动态障碍物  📕2.4 网格链接  📕2.5 自定义网格链接  📕2.6 区域 不知道大家有没有玩过红色警戒 —— 一款即时战略游戏,和罪恶都市一样小编小学的时

    2024年01月20日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包