是否可以将Box Collider组件包含在Raw Image游戏对象中以检测碰撞?

时间:2017-10-11 12:59:16

标签: c# unity3d collision-detection

原始图像似乎仅适用于UI。但是,UI对象(面板或画布)似乎不能包含对撞机。

我尝试的相反解决方案是使用3d面板,但我不知道如何将原始图像(png文件)转换为材质。是否可以在平面游戏对象中显示png图像?

我想要包含一段代码,如:

void OnTriggerStay(Collider col)
{
    // TODO called when the game object that includes this script is collided 
    //      (if it has a Collider component with isTrigger enabled)
}

到目前为止,我的解决方法是使用带有对撞机的3d游戏对象和带有原始图像的分离的UI游戏对象。对我来说这似乎很糟糕,但也许这是最好的解决方案!

2 个答案:

答案 0 :(得分:2)

是的,这是可能的,但对撞机不应与UI组件一起使用。

如果要执行此操作,请将“画布渲染模式”更改为“世界空间”:

enter image description here

然后手动修改Collider以适合RawImage。给它一个深度,使它不平坦:

enter image description here

如果您决定使用3D对象,那么VTodorov的回答应该是这样做的。

使用简单的平面,您可以通过脚本执行此操作:

public Texture2D yourTeture;
public GameObject plane;

void Start()
{
    MeshRenderer meshRenderer = plane.GetComponent<MeshRenderer>();
    meshRenderer.material.mainTexture = yourTeture;
}

答案 1 :(得分:1)

您可以非常轻松地在Unity中创建素材。只需将您的图像导入Unity,然后点击资产 - &gt;创建 - &gt;材料。选择您的材料并将图像拖动到检查器(应该有一个名为“无(纹理2D)”的字段或类似的字段)。然后,您可以将材料应用于任何所需的对象。