Raycast2d无法使用compareTag

时间:2018-01-18 15:42:18

标签: c# unity3d

所以我遇到了我的敌人AI剧本的一个小问题,其中光线播放不想与我合作。代码如下:

void DetectionF(float distanceToTarget)
{
float angle = Vector2.Angle(vision, target.position);
if (lastAngle!=angle)
    Debug.Log("Angle: " + angle);
lastAngle = angle;


Debug.DrawLine(transform.position, target.position, Color.red, 0.2f);
if (70f< angle && angle<140f)
{
    RaycastHit2D hit = Physics2D.Raycast(transform.position, target.position, distanceToTarget);
    //This right here is where the problem lays
    if (hit.collider.gameObject.CompareTag("Player"))
    {
        player.detected = true;
        CancelInvoke("Undetect");
    }
}
}

我只需要确认光线投射击中了玩家而没有别的。 提前谢谢!

1 个答案:

答案 0 :(得分:1)

首先,确保光线正在击中的游戏对象被真正标记为&#34;播放器&#34;。如果是,那么我认为解决这个问题的最佳方法是尝试制作2个单独的if()语句,以达到你想要的效果。 例如:

if(hit.collider.gameObject){
        if(gameObject.tag == "Player"){
            player.detected = true;
            CancelInvoke("Undetect");
    }
}

希望这可以解决您的问题!