RayCastHit2D无法检测到播放器

时间:2018-09-07 11:17:38

标签: c# unity3d game-physics raycasting

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

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");
        }
    }
}

我可以在场景中清楚地看到射线穿过播放器: enter image description here

播放器具有Rigidbody2D和BoxCollider2D作为触发器: enter image description here

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

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

从导弹上发射射线的想法是当EnemyMissile朝向Player时播放AudioClip。

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

谢谢您的帮助。

编辑以回答@Monofuse评论:当我选择播放器时,转换为: x:0.4567,y:-1.58,z:0

enter image description here

当我选择导弹时,“变形”为: x:0.3699,y:-1.054,z:0

enter image description here

编辑以回答@Ada Nub:

默认情况下,我都选中了这两个选项:“命中触发器”和“以碰撞器开始”。

现在,我没有选中“在碰撞器中启动查询”,但是结果是一样的,我在控制台上看不到打印内容:

enter image description here

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

现在它可以工作了: enter image description here

1 个答案:

答案 0 :(得分:5)

您是否已在“编辑”>“项目设置”>“ Physics2D”中打开“查询命中触发器”? 默认情况下,射线广播不会触发触发器,因此这可能是您的问题。

Image of 'Queries hit triggers' option

它下面的选项“查询始于对撞机”可能也值得研究;由于您是从导弹对撞机内部投射光线,因此您可能希望取消选中该选项,以免它不计入作为攻击点的导弹。