You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity2D动态激光对撞:添加与光束等长的触发BoxCollider2D

激光触碰触发死亡实现方案

前置配置

  • 给挂载当前激光脚本的GameObject添加BoxCollider2D组件,勾选组件面板上的Is Trigger选项,开启触发模式
  • 确保玩家对象身上挂载了Collider2D(任意2D碰撞体均可)和Rigidbody2D组件(Unity2D触发检测的必要条件)

完整实现代码

{
    private LineRenderer lineRenderer;
    private BoxCollider2D laserCollider;
    public Transform LaserHit; 
    // 可根据LineRenderer的实际宽度调整,和激光显示宽度保持一致即可
    public float laserWidth = 0.1f;
    // 无碰撞时的最大激光长度,避免Raycast无命中时报错
    public float maxLaserLength = 10f;

    void Start()
    {
        lineRenderer = GetComponent<LineRenderer>();
        laserCollider = GetComponent<BoxCollider2D>();
        lineRenderer.useWorldSpace = true;
        // 初始化碰撞体宽度
        laserCollider.size = new Vector2(laserWidth, 0);
    }

    void Update()
    {
        RaycastHit2D hit = Physics2D.Raycast(transform.position, transform.up);
        Vector2 endPoint;
        // 判断Raycast是否命中物体
        if (hit.collider != null)
        {
            endPoint = hit.point;
        }
        else
        {
            endPoint = (Vector2)transform.position + (Vector2)transform.up * maxLaserLength;
        }
        LaserHit.position = endPoint;
        lineRenderer.SetPosition(0, transform.position);
        lineRenderer.SetPosition(1, endPoint);

        // 同步更新碰撞体参数
        float laserLength = Vector2.Distance(transform.position, endPoint);
        // 设置碰撞体尺寸,y轴为激光长度,x轴为预设的激光宽度
        laserCollider.size = new Vector2(laserWidth, laserLength);
        // 碰撞体位置设为激光的中点,保证覆盖整段激光
        laserCollider.offset = new Vector2(0, laserLength / 2);
    }

    // 触发检测逻辑
    private void OnTriggerEnter2D(Collider2D other)
    {
        // 自行修改为你实际的玩家对象标签
        if (other.CompareTag("Player"))
        {
            // 替换为你已经开发完成的玩家死亡方法即可
            other.GetComponent<你的玩家脚本类名>().PlayerDeath();
        }
    }
}

注意事项

  • 代码里的laserWidth数值要和你LineRenderer组件上设置的Start Width、End Width数值保持一致,避免碰撞范围和激光显示宽度不匹配
  • 记得把玩家对象的标签设置为Player,或者把代码里的标签判断修改为你自己用的玩家标识
  • 如果你的激光发射角度会动态变化,该逻辑也会自动适配,不需要额外修改代码

内容的提问来源于stack exchange,提问作者tok23

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 16:36:02