我有一个具有漫反射着色器的对象,并且在运行时我希望着色器切换到漫反射始终可见,但只有当单元位于名为障碍的图层中的特定对象后面时才会触发。
首先,我尝试使用以下代码切换对象着色器,并在检查器中更改着色器,但在播放期间不在游戏中。我尝试从资源中放置并调用着色器,并创建了单独的材质,但它不起作用。
以下是我在C#中使用的代码
Unit.renderer.material.shader = Shader.Find("Diffuse - Always visible");
至于其余部分,我正在考虑使用光线投影,但不知道如何处理。
提前致谢
答案 0 :(得分:0)
我现在只需要另一个概念,如果一个单元在一个对象后面,着色器就会改变!
对于触发器,如何处理它将取决于相机的移动方式。
要签入3D游戏,光线投射应该有效。因为某事是否落后于#34;其他东西取决于相机的观点,我个人会尝试这样的事情开始:
根据您的目标,您可能需要检查不同的观点。如果您只是检查某个物体是否超过物体覆盖的一半,则在其中心进行单个光线投射可能就足够了。如果你想看看它是否完全闭塞,你可以尝试找到对象的四个近似角点并对它们进行光线投射。
如果它是2D游戏或者相机始终处于固定角度(例如,在侧边滚动条中),则问题可能很多简单。将碰撞器添加到对象,并使用OnTriggerEnter或OnTriggerEnter2D(以及相应的Exit函数)。只有当最小的重叠部分触发效果时才有效,并且仅当深度不真正重要时(例如在2D游戏中)才有效,因此你的对手实际上会相交。