我正尝试从实例化的导弹预制件投射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");
}
}
}
播放器具有Rigidbody2D和BoxCollider2D作为触发器:
并且EnemyMissile有自己的RigidBody2D和BoxCollider2D作为触发器:
但是我在控制台上看不到任何内容
从导弹上发射射线的想法是当EnemyMissile朝向Player时播放AudioClip。
我看过: Raycast Hit Collider is Always NULL Physics2D.Raycast returning null
谢谢您的帮助。
编辑以回答@Monofuse评论:当我选择播放器时,转换为: x:0.4567,y:-1.58,z:0
当我选择导弹时,“变形”为: x:0.3699,y:-1.054,z:0
编辑以回答@Ada Nub:
默认情况下,我都选中了这两个选项:“命中触发器”和“以碰撞器开始”。
现在,我没有选中“在碰撞器中启动查询”,但是结果是一样的,我在控制台上看不到打印内容:
答案 0 :(得分:5)
您是否已在“编辑”>“项目设置”>“ Physics2D”中打开“查询命中触发器”? 默认情况下,射线广播不会触发触发器,因此这可能是您的问题。
Image of 'Queries hit triggers' option
它下面的选项“查询始于对撞机”可能也值得研究;由于您是从导弹对撞机内部投射光线,因此您可能希望取消选中该选项,以免它不计入作为攻击点的导弹。