当前位置: 首页 > news >正文

unity npc射线检测碰撞

源代码

计算碰撞体的高度一半,用于将射线的起点从物体的中心点偏移到底部。
 

var offset = m_collider.size.y * 0.5f;
var hit = Physics2D.Raycast(
    transform.position - new Vector3( 0, offset, 0 ), // 射线起点
    dir,                                              // 射线方向
    m_collider.size.x * 0.55f,                        // 射线长度
    Globals.ENV_MASK                                  // 仅检测 ENV_MASK 层
);

原项目使用效果

是刚好超出碰撞体x长度0.05的

新项目使用效果

问题

我也是0.5怎么就取不到一半

结果

他喵的整个对象的大小变了,结果碰撞体的长度也影响了,最终值就错了

原:

新:

(亏我调了几个钟可恶)

解决:

加个bound就行了

    var raycastLength = m_collider.bounds.size.x * 0.55f;

 对比

var offset = m_collider.size.y * 0.5f;
var hit = Physics2D.Raycast(
    transform.position - new Vector3( 0, offset, 0 ), // 射线起点
    dir,                                              // 射线方向
    m_collider.size.x * 0.55f,                        // 射线长度
    Globals.ENV_MASK                                  // 仅检测 ENV_MASK 层
);
        var offset = m_collider.size.y * 0.5f;
        var raycastLength = m_collider.bounds.size.x * 0.55f; // 适配缩放
        var hit = Physics2D.Raycast(
            transform.position - new Vector3(0, offset, 0),
            dir,
            raycastLength,
            Globals.ENV_MASK
        );

结果:无论对象大小多少,都不影响射线整体比例 

//调试射线代码
Debug.DrawRay(transform.position - new Vector3(0, offset, 0), dir * (raycastLength), Color.red, 1f);

 

http://www.dtcms.com/a/76025.html

相关文章:

  • Java技术专题-Java Agent探针的技术介绍(1)
  • DocumentByParagraphSplitter:LangChain4j中文本处理的“智能切割刀”
  • 防火墙双机热备(主备分担)
  • 神经外科手术规划的实现方案及未来发展方向
  • Java 反射机制详解
  • 4.好事多磨 1
  • 流量密码破解:eBay店铺首页改版后的黄金展示位
  • HTML,CSS,JavaScript
  • 如何有效运营Instagram,降低封号风险?
  • Java的继承:方法;属性?
  • 使用 Google Firebase 控制台和 ESP8266 NodeMCU 的物联网控制 LED
  • 如何理解std::promise和std::future
  • 【conda activate无效】 conda: error: argument COMMAND: invalid choice: ‘activate‘
  • 【css酷炫效果】纯CSS实现悬浮弹性按钮
  • SSH时bashrc失效 - 解决方案
  • 关于“碰一碰发视频”系统的技术开发文档框架
  • 【C++】Virtual function and Polymorphism
  • 数据判定与去重:确保数据准确性和一致性的最佳实践
  • JAVA学习*抽象类
  • 【深度学习与大模型基础】第6章-对角矩阵,对称矩阵,正交矩阵
  • os题:第二章 进程的描述与控制
  • 【C#语言】C#同步与异步编程深度解析:让程序学会“一心多用“
  • 计算机操作系统(6) (经典进程同步问题)
  • ORA-12541: TNS:no listener
  • 自定义捕捉与处理信号的底层逻辑
  • 希尔排序算法
  • 拖拽实现+摇杆实现
  • 【AVRCP】蓝牙协议栈深度解析:AVCTP互操作性核心机制与实现细节
  • 织梦DedeCMS优化文章模版里的“顶一下”与“踩一下”样式
  • C++ 多生产者单消费者(MPSC)模式