Eno*_*noy 0 c# unity-game-engine 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");
}
}
}
Run Code Online (Sandbox Code Playgroud)
玩家有一个Rigidbody2D和一个BoxCollider2D作为触发器:
而EnemyMissile有自己的RigidBody2D和BoxCollider2D作为触发器:
但是我在控制台上看不到任何内容
从导弹投射射线的想法是当EnemyMissile进入玩家时播放AudioClip.
我看过: Raycast Hit Collider总是NULL Physics2D.Raycast返回null
谢谢您的帮助.
编辑 回答@Monofuse评论:当我选择播放器时,转换为:x:0.4567,y:-1.58,z:0
当我选择导弹时,变换是:x:0.3699,y:-1.054,z:0
编辑回答@Ada Nub:
我默认选中了两个选项:查询命中触发器和查询在碰撞器中启动.
现在我取消选中了碰撞器中的查询开始,但结果是一样的,我没有在控制台上看到打印:
小智 5
您是否在编辑>项目设置> Physics2D中打开了"查询命中触发器"?默认情况下,Raycast不会触发触发器,因此这可能是您的问题.
它下方的选项,"查询从碰撞者开始",也可能值得研究; 因为你是从导弹对撞机内部投射光线投射,所以你可能希望不选择该选项,这样它就不会计算它作为命中开始的导弹.