我尝试使用 RaycastAll 在攻击玩家之前检查玩家身后是否有物体,但它不会与任何物体发生碰撞

问题描述 投票:0回答:1

我有一个敌人,它会向玩家发送光线并检查其后面是否有任何东西。所示的光线仅显示了线的一部分,但正如您所看到的,它确实与玩家发生了碰撞。播放器附加了一个碰撞器,我尝试将其设置为正常并作为触发器。

我对代码所做的是检查返回数组的长度,由于某种原因它返回 0。以前当我使用

.lookAt()
时它曾经可以工作,但这导致旋转不再工作。我不知道该怎么做,我以为我了解光线投射是如何工作的,但有什么我不知道的吗?谢谢你的帮助

 bool CheckForColliders()
    {
        Vector2 direction = transform.position - player.transform.position;
        Debug.Log(Physics2D.RaycastAll(transform.position, direction, chargingRange * 2).Length); //returns 0
        if (Physics2D.RaycastAll(transform.position, direction, chargingRange * 2).Length == 1)
        {
            return true;
        }
        return false;
    }
unity-game-engine 2d raycasting
1个回答
0
投票
V = A - B

这个向量的方向是朝向位置

A
,以
B
为原点,所以显然你把它弄反了。

© www.soinside.com 2019 - 2024. All rights reserved.