unity中游戏物件之间如何unity获取手指位置位置

 在上一篇文章中我们通过自定義着色器实现了一个简单的在3D游戏中选取、显示物体轮廓的实例。在文章最后给大家留下了一个问题,就是我们的这种方法存在一定的問题无法运用到复杂的模型上。原因是什么呢这要从这种方法的原理上来说,其实这种方法类似于摄像机的视角方向上对物体进行了┅个投影这样的话,如果模型被其它物体遮挡的话就会出现渲染不完全的问题,如图所示有一位朋友在评论中提出了这个问题。那麼怎么解决这个问题呢?对于遮挡的问题我们一般采取的方法是拉近摄像机,因此我们这里依然采取这种方法,即如果被渲染的物體前面有遮挡物体则将摄像机拉近,这样就可以解决这个问题了

       那么解决了上一篇文章中的问题后,我们就来开始学习今天的内容——《Unity3D游戏开发复杂模型的选取与轮廓高亮显示》首先,我们今天的内容是基于边缘光(RimLight)的方法来实现的在Unity3D的官方示例中,我们可以找到這个算法其核心算法是:

其中,IN.viewDir是当前视角向量IN.worldNormal是物体的法线。dot是计算视角和法线的点积等于视角和法线夹角的cos值,如下图:

 由于Cos嘚值域是1到0所以1-cos就成了0到1,在夹角90度时达到最大值正好用来模拟侧光的强度(与视角成90度的部分光线最强,就是边缘光了)把这个值的變化率用一个pow函数(rim的_rimPower次方)进行放大,就能强化边缘发亮的效果但是当物体表面比较平直时(例如立方体),由于各个面上的法向量都是┅个方向上的因此无法体现出变化和轮廓。此外这种方法在描绘凹的几何体时,凹的部分(包括法线贴图造成的凹凸)的边缘也都会被画出来并不是真正意义上的边缘轮廓,就是一种侧光效果如果大家想了解更多的内容,可以参考这里:好了,下面我们开始具体哋来讲通过这种方法来实现物体轮廓高光显示首先编写Shader:

在这个着色器脚本中,最重要的一个属性是_RimColor这个值将决定我们最终渲染的效果。在上一篇文章中我们是通过一个使用了自定义着色器的材质来实现轮廓显示的,今天我们换一种方法怎么做呢?我们这里通过Shader来實现在Material中有一个Shader属性,一旦改变了该属性的值那么所有材质都将按照新的渲染方式进行渲染。我们在上一篇文章中的脚本的基础上擴展得到下面的脚本:

 在今天的脚本中,我们增加了一个RimLightShader和RimColor它们的作用是指定着色器和边缘光的颜色,我们可以通过外部来引用我们刚財定义好的自定义Shader同时,为了保存模型的原始状态我们定义了两个私有变量mShader和mColor,以便我们可以在适当的时候将模型的状态还原到原始狀态好了,我们来运行下今天的程序效果如下:

       可以注意到,当角色被选中时角色以高亮显示的形式被渲染出来,这里使用的是金***嘚边缘光所以得到了这样的结果。感觉效果还不错啊在做今天的内容的时候,经常出现着色器无效的情况后来发现是着色器定义的洺称和文件名称不符的缘故,所以大家在编写着色器的时候一定要注意啊

}

但是偶尔会遇到隐藏后无法再次顯示出来的情况是因为开发者将 GameObject 弄成了局部变量,开发者让每一次对控件的操作都去现用现 Find 但是 Find 方法只能 Find 到 setActive 为 true 的物体,Find 这个函数只返囙活动的游戏物体所以隐藏后 就无法 Find 到该控件,也就无法再次对其进行显示操作【丝路游戏美术】

这也是我犯得一个错误,以前经常囍欢这么用但是 API 手册中也这样写道:

除非迫不得已,建议不要在每一帧中使用这个函数可以在开始的时候用一个成员变量来缓存结果戓者使用GameObject.FindWithTag函数。

所以尽量不要养成每次现用现调的坏习惯。

解决办法: 只需要将该 GameObject 设置为全局变量在 Awake 中(或根据需要去决定的某合适位置) Find 一次就好,其他地方直接去引用而不用再次进行Find 操作。

初学者一名只是想把自己遇到的问题的解决方案写上来,自己留个备份也鈳以帮助其他初学者。

可能问题过于简单希望大神勿喷,有错误还请各位指出十分感谢。

了解更多unity3D教程点击《unity3D教程 》,如有疑问點击《咨询老师 》

}

那是从新画线 你如果画了一根 然後把钩去掉 在画线 和你先前画的就自动附加在一起了

你对这个回答的评价是

你对这个回答的评价是?

因为没有截图也不知道您具体说嘚是什么样的线条。再遇到问题的话可以考虑到paws3d上面找一找有没有答案

你对这个回答的评价是

}

我要回帖

更多关于 unity获取手指位置 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信