我正在制作2D平铺游戏。假设黄褐色瓷砖是英雄角色,而深蓝色瓷砖是可移动的距离。
在Hero上,Sprite渲染器,Box Collider 2D和Rigidbody 2D被添加到游戏对象中;图层是字符。大小为1 x 1单位,坐标为(0,0)。
然后,我创建了围绕英雄的4个可移动范围的瓷砖(复制自预制,尺寸为1 x 1单位,图层为前景)。为了让OnMouseDown()
工作,我在Prefab中添加了Box Collider 2D。添加了对撞机后,出现了问题。英雄不停地振动,因为它与4个可移动范围的瓷砖不间断地碰撞。我怎样才能阻止碰撞的发生? 我认为如果它们位于不同的层中它们不会发生碰撞,但事实上它们会发生碰撞!
注意:我可以不使用Raycast方法(因为它会使代码变得非常复杂)吗?
最后一点是,我的目标是制作桌面版和移动版,检测触控和触控的全球方式是什么?同时点击?
答案 0 :(得分:1)
我认为如果他们处于不同的层次,他们就不会发生碰撞
只有正确设置。转到编辑 - >项目设置 - >物理 - >层碰撞矩阵。如果选中一个框,则相应的图层会发生冲突。
我的目标是制作桌面版和移动版,检测触控和触控的全球方式是什么?同时点击?
鼠标和触摸输入在Unity中分开,因此没有全局方式,但单次触摸可以模拟移动平台上的鼠标行为(即触发OnMouseDown()),而鼠标无法模拟触摸(即Input.touches将为空)。因此,如果它适合您,您可以在两个平台上使用鼠标输入,否则(例如,多点触控会导致麻烦)您必须制作与平台相关的控件(对于平台定义,请参阅http://docs.unity3d.com/Manual/PlatformDependentCompilation.html)。