我认为您可以尝试 2 件事(如果您不想在您的区域周围添加 4 个对撞机),您需要了解的第一件事是相机实际上不在您正在观看的位置-游戏视图,它只是一个投影。相机可能在后面,因此您不是在搜索与相机的碰撞,而是与相机看到的东西的碰撞。
- 添加边缘对撞机
边缘碰撞器只是在物体边缘放置一个碰撞器,但它不会像那样工作,因为相机在后面很远,所以你需要稍微缩放碰撞器以适应实际的游戏视图。
- 添加执行此操作的代码
这有点愚蠢但可以工作,我的意思是,添加 4 个对撞机要容易得多,但我想你可以用代码来做到这一点并获得相同的结果。例如,如果我想要顶部边框,我可以使用:
GameObject top;
void Awake()
{
top = new GameObject("Top");
}
void Start()
{
BoxCollider2D collider = top.AddComponent<BoxCollider2D>();
collider.size = new Vector3(Mathf.Abs(Camera.main.ScreenToWorldPoint(new Vector3(0f, 0f, 0f)).x - Camera.main.ScreenToWorldPoint(new Vector3(Screen.width, Screen.height, 0f)).x), 0.1f, 0f);
collider.offset = new Vector2(collider.size.x / 2f, collider.size.y / 2f);
top.transform.position = new Vector3((Camera.main.ScreenToWorldPoint(new Vector3(0f, 0f, 0f)).x - Camera.main.ScreenToWorldPoint(new Vector3(Screen.width, Screen.height, 0f)).x) / 2f, Camera.main.ScreenToWorldPoint(new Vector3(Screen.width, Screen.height, 0f)).y, 0f);
}
我认为这样做有点愚蠢,因为这只是针对顶部对撞机,也许您应该考虑一种在检查器中与它们一起工作的方法