C# RayCastHit2D未检测到播放机
我试图从实例化的导弹预制件中投射2D射线,如下所示:C# RayCastHit2D未检测到播放机,c#,unity3d,game-physics,raycasting,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.dow
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");
}
}
}
我可以在场景中清楚地看到光线穿过播放器:
玩家有一个刚体2D和一个盒子R2D作为触发器:
“敌人”导弹有自己的刚体2D和R2D作为触发器:
但是我在控制台上看不到任何打印内容
从导弹上投射光线的想法是当敌人的导弹向玩家飞去时播放一段音频剪辑
我看到:
谢谢你的帮助
编辑回答@Monofuse注释:当我选择玩家时,转换为:
x:0.4567,y:1.58,z:0
选择导弹时,变换为:
x:0.3699,y:1.054,z:0
编辑以回答@Ada Nub:
我默认选中了这两个选项:查询命中触发器和查询在碰撞器中启动
现在我在Colliders中启动了未选中的查询,但是结果是相同的,我在控制台上看不到打印:
我意识到我的错误,我没有按下控制台中的信息选项卡:
现在它可以工作了:
您是否在编辑>项目设置>物理2D中打开了“查询命中触发器”? 默认情况下,光线投射不会命中触发器,因此这可能是您的问题
它下面的选项“查询在碰撞器中启动”,可能也值得研究;由于您是从导弹的碰撞器内部投射光线投射,您可能希望取消选中该选项,这样它就不会将开始时的导弹计算为命中。您是否在“编辑>项目设置>物理2D”中启用了“查询命中触发器”? 默认情况下,光线投射不会命中触发器,因此这可能是您的问题
它下面的选项“查询在碰撞器中启动”,可能也值得研究;由于您是从导弹的碰撞器内部投射光线投射,您可能希望取消选中该选项,这样它就不会将其作为命中开始的导弹计算在内。它们是否都在同一y轴上?也许它们是在X和Z轴上碰撞,但不是在Y轴上碰撞。啊,所以这是一个愚蠢的错误哈哈,发生在我们中最好的人身上:把它们都放在同一个Y轴上?也许他们是在X和Z方向碰撞,但不是在Y方向碰撞。啊,所以这是一个愚蠢的错误哈哈,发生在我们当中最好的人身上:P