RayCastHit2D 未检测到播放器

RayCastHit2D does not detect Player

我正在尝试从实例化的导弹预制件投射二维射线,如下所示:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class EnemyMissile : MonoBehaviour {


    void Update () {
        RaycastHit2D hit = Physics2D.Raycast(transform.position, Vector2.down,1f);
        Debug.DrawRay(transform.position, Vector2.down, Color.green);
        if(hit)
        {
            print("Hit");
        }
        else
        {
            print("No hit");
        }
    }
}

我在场景中可以清楚地看到射线穿过玩家:

Player 有一个 Rigidbody2D 和一个 BoxCollider2D 作为触发器:

并且 EnemyMissile 有自己的 RigidBody2D 和 BoxCollider2D 作为触发器:

但是我在控制台上看不到任何打印内容

从导弹投射射线的想法是在 EnemyMissile 飞向 Player 时播放 AudioClip。

我看过: Raycast Hit Collider is Always NULL Physics2D.Raycast returning null

感谢您的帮助。

EDIT 回答@Monofuse 评论:当我 select Player 时,Transform 是: x: 0.4567, y: -1.58, z: 0

当我select发射导弹时,变换是: x: 0.3699, y: -1.054, z: 0

编辑以回答@Ada Nub:

默认情况下,我选中了两个选项:查询命中触发器和查询从碰撞器开始。

现在我在 Colliders 中取消选中 Queries Start,但是结果是一样的,我没有在控制台上看到打印:

我意识到我的错误,我没有按下控制台中的“信息”选项卡:

现在可以使用了:

您是否在“编辑”>“项目设置”>“Physics2D”中打开了 'Queries hit triggers'? Raycasts 默认情况下不会命中触发器,因此这可能是您的问题。

Image of 'Queries hit triggers' option

它正下方的选项 'Queries start in colliders' 可能也值得研究;由于您是从导弹的对撞机内部投射光线投射,因此您可能希望取消选中该选项,这样它就不会将它开始的导弹计算为命中。