Javascript Unity Raycast2D只能像1个单位一样射击

Javascript Unity Raycast2D只能像1个单位一样射击,javascript,unity3d,unity5,raycasting,unity2d,Javascript,Unity3d,Unity5,Raycasting,Unity2d,我有一个带枪的2D角色,我想实例化一个爆炸,他的子弹与其他物体碰撞 我认为最好的方法是javascript中的Raycast2D var hit: RaycastHit2D = Physics2D.Raycast(transform.position, Vector2.right); if (hit.collider != null){ boomClone2 = Instantiate(boom, new Vector3(hit.point.x, hit.point.y, transfo

我有一个带枪的2D角色,我想实例化一个爆炸,他的子弹与其他物体碰撞

我认为最好的方法是javascript中的Raycast2D

var hit: RaycastHit2D = Physics2D.Raycast(transform.position, Vector2.right);
if (hit.collider != null){
    boomClone2 = Instantiate(boom, new Vector3(hit.point.x, hit.point.y, transform.position.z - 1), Quaternion.identity);
}

现在的问题是我开火,爆炸总是像我的角色前面的一个单位一样实例化,即使那里什么都没有。我不知道为什么。

最大的问题是,在实例化任何对象之前,您甚至没有检查光线投射击中的对象。这是错误的。光线投射器可以击中它前面的任何东西。任何带有2D对撞机的东西。它甚至可以击中角色本身

创建一个“敌人”标签,将你的敌人放入该标签中。当光线投射不是
null
时,在实例化任何东西之前,确保敌人确实被击中

if (hit.collider != null)
{
    if (hit.collider.CompareTag("Enemy"))
    {
        boomClone2 = Instantiate(boom, new Vector3(hit.point.x, hit.point.y, transform.position.z - 1), Quaternion.identity);
    }
}


正如我所说,光线投射甚至可以击中自己,特别是当2D光线投射完成时。如果这是问题所在,请参阅文章,了解如何解决此问题。

最大的问题是,在实例化任何对象之前,您甚至没有检查光线投射击中的对象。这是错误的。光线投射器可以击中它前面的任何东西。任何带有2D对撞机的东西。它甚至可以击中角色本身

创建一个“敌人”标签,将你的敌人放入该标签中。当光线投射不是
null
时,在实例化任何东西之前,确保敌人确实被击中

if (hit.collider != null)
{
    if (hit.collider.CompareTag("Enemy"))
    {
        boomClone2 = Instantiate(boom, new Vector3(hit.point.x, hit.point.y, transform.position.z - 1), Quaternion.identity);
    }
}


正如我所说,光线投射甚至可以击中自己,特别是当2D光线投射完成时。如果这是问题所在,请参阅文章,了解如何解决此问题。

您应该更改raycast的原点。或者你可以为玩家创建新的图层。并在光线投射时排除该层

RaycastHit2D hit = Physics2D.Raycast (transform.position, Vector2.right, ~(LayerMask.GetMask ("player")));

您应该更改raycast的原点。或者你可以为玩家创建新的图层。并在光线投射时排除该层

RaycastHit2D hit = Physics2D.Raycast (transform.position, Vector2.right, ~(LayerMask.GetMask ("player")));

“NSTATITES总是喜欢在我的角色面前放一个单位,即使那里什么都没有。”你能再解释一下吗?也许是你正在谈论的一个屏幕截图……它看起来像这样:CHARACTER\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu?哪一个是你所称的转换?(角色、敌人或爆炸?)你有没有试过简单地打印出你正在碰撞的物体的名称?这将有助于您调试它。在此基础上,您可以添加条件,验证预置仅在命中您想要的对象时才会实例化。“nStantates总是像我的角色前面的一个单元一样,即使那里什么都没有。”您能进一步解释一下吗?也许是你正在谈论的一个屏幕截图……它看起来像这样:CHARACTER\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu?哪一个是你所称的转换?(角色、敌人或爆炸?)你有没有试过简单地打印出你正在碰撞的物体的名称?这将有助于您调试它。在此基础上,您可以添加条件,验证预置仅在命中所需对象时实例化。