Unity3d Unity 2D-如何在我的精灵上创建分辨率无关的碰撞器

Unity3d Unity 2D-如何在我的精灵上创建分辨率无关的碰撞器,unity3d,collision,screen-resolution,Unity3d,Collision,Screen Resolution,我目前正在做一个学校项目,我们必须将2010年的游戏与街机风格的游戏合并。我选择了合并鳕鱼:黑帮僵尸模式和吃豆人 我马上就有问题了。我在想我怎样才能使对撞机达到我的水平刻度和分辨率 我有一台5号的正交照相机 这就是我目前的水平。 如上所示,关卡本身是一个单独的精灵,放置在启用了屏幕大小缩放的画布中。 为了测试,我在它上面的空游戏对象上放置了两个2D碰撞器。 当前分辨率为1920x1080,宽高比为16:9 但是,如果我将分辨率更改为800x600,即4:3的纵横比。。。那么现在对撞机完全错了。

我目前正在做一个学校项目,我们必须将2010年的游戏与街机风格的游戏合并。我选择了合并鳕鱼:黑帮僵尸模式和吃豆人

我马上就有问题了。我在想我怎样才能使对撞机达到我的水平刻度和分辨率

我有一台5号的正交照相机

这就是我目前的水平。

如上所示,关卡本身是一个单独的精灵,放置在启用了屏幕大小缩放的画布中。 为了测试,我在它上面的空游戏对象上放置了两个2D碰撞器。 当前分辨率为1920x1080,宽高比为16:9

但是,如果我将分辨率更改为800x600,即4:3的纵横比。。。那么现在对撞机完全错了。

我以为对撞机会像关卡精灵一样随屏幕大小缩放,但我错了

我现在正试图找到另一种方法,使水平有碰撞,也改变了精灵的大小


如果您需要更多信息,请告诉我,我将很乐意用所需的信息更新我的问题。

为了简单起见,首先从正方形的侧面画布开始。 制作一个空的游戏对象,并将其放置在画布的左下角

把你所有的对撞机都放在这个空的游戏对象里,然后设置它们,使它们与你的游戏场相匹配

现在,您需要做的就是在这个空游戏对象上设置一个脚本,并在Update()中进行设置:


这将使它的规模内的一切,以相同的比例作为屏幕。或者,如果你想基于画布的大小而不是屏幕本身,你可以使用画布的大小。

它不起作用,因为碰撞器生活在世界空间,而不是像UI那样的屏幕/视口空间(除非它位于“特殊形式的画布”上,但也不会缩放)。您可以在UI上找到不同的(自制的?)碰撞解决方案,或者在世界上创建游戏并相应地重新定位您的相机。谢谢您的回复。下次有机会我会试试这个,我会让你知道它是怎么回事。:)不幸的是,这不起作用。我的老师建议我坚持一个长宽比,而不是尝试缩放,因为我会花费太多的时间来计算它。然而,我想学习如何做它无论如何为未来!这是一段视频,我正在浏览您提出的解决方案。:)也许我犯了一个错误?不,你没有犯一个错误,因为画布元素在缩放孩子的过程中也起到了作用,所以要让它发挥作用还有很多。我现在没有太多的时间调试它,但这个想法是合理的,只是要抵消这些怪癖。如果你不能自己解决的话,我可能会在以后再讨论这个问题。好吧,因为我的老师建议我坚持一个纵横比,这就是我目前正在做的。这样我就可以及时完成我的学校项目,而不是继续第一步哈哈。。。
Vector2 screenScale = new Vector2(Screen.width, Screen.height).normalized;
transform.localScale = new Vector3(screenScale.x, screenScale.y, 1);