A. (四)Unity纹理、贴图和材质
在Unity中,我们可以这样理解:Material(材质)包含Map(贴图),Map包含Texture(纹理)。
首先在工程中创建一个Terrain(地形)和一个Cube(立方体),然后我们基于这两个物体来深入学习什么是纹理、贴图和材质。
下面我们添加一个地形纹理和一个LOL泳池派对纹理。(其实就是图片)
我们来学习一下纹理的Inspector视图中都有什么属性功能,以“泳池派对”为例。
效果如下:
详情如下:
Texture:纹理
Normal map:法线贴图
(游戏场景中譬如雕刻这种3D细节,如果做3D模型的话,就会浪费显示芯片,使游戏性能下降,便会用法线贴图,既不影响玩家体验游戏又不影响游戏性能)
Editor GUI and Legacy GUI:编辑器的GUI和传统的GUI
Sprite(2D and UI):图片精灵
Cursor:设为光标
Cubemap:立方体贴图
Cookie:聚光灯贴图
Lightmap:光照贴图
Advanced:高级选项(当你想要有纹理的具体参数并想拥有纹理的完全控制的时候选择该项)
UV坐标:水平方向是U,竖直方向是V。因为图片(纹理)是一个二维的平面,所以只需要UV坐标便可以确定图片的位置。(当然也有三维贴图,要用到UVW坐标,暂时还接触不到。)
贴图:一种就是就是把纹理通过UV坐标映射到3D物体的表面,另一种就是把纹理加入一些功能,这两种都是贴图。贴图具有 UV 坐标属性或者一些功能,而纹理没有。
我们把Terrain加上纹理,此时这个名为“地形”的纹理就成为了Terrain的贴图。
Shader负责将输入的Mesh(网格)以指定的方式和输入的贴图或者颜色等组合作用,然后输出。绘图单元可以依据这个输出来将图像绘制到屏幕上。
将输入的贴图或者颜色,加上对应的Shader,以及对Shader的特定的参数设置,将这些打包在一起就是一个材质了。之后,我们便可以将材质赋予合适的renderer(渲染器)来进行渲染。
点击Create,添加一个材质和一个物理材质。
选色:
上色:
Dynamic Friction:动摩擦系数
Static Firction:静摩擦系数
Bounciness:弹性系数
Friction Combine:联动摩擦
Bounce Combine:联动反弹
Average:取平均值。
Minimum:取最低值。
Multiply:取相乘值。
Maximum:取最大值。
B. unity3d 如何给同一物体不同面加不同材质
常规做法是在max软件把模型分开,展UV,贴俩材质球,多维材质也行,unity本身没这功能,要在unity实现,以前有个展UV的插件,可以用,但是并不方便,简单几何体可以用代码生成或者自写shader,也能实现UV贴图,但毕竟不是正途,还是让美工做吧
C. unity 怎么为组件设置材质
关键词
MeshRenderer m_meshrender = 通过任意方法找到药水的物体.GetComponent<MeshRenderer> ();
m_meshrender.material=你的材质 ;
D. unity怎么新建材质球
很简单的我就建立一个名字为test的C#脚本 usingSystem.Collections; usingSystem.Collections.Generic; usingUnityEngine; publicclasstest:MonoBehaviour { publicGameObject[]GameObjectUse;//你要改变材质的物体组 publicMaterialMaterial1;//第一个材质球 publicMaterialMaterial2;//第二个材质球 publicMaterialMaterial3;//第三个材质球 //因为就三个材质球比较少就简单的方式不需要用数组; voidOnButtonDown1()//按下第一个按钮 { for(inti=0;i<GameObjectUse.Length;i++) { GameObjectUse[i].GetComponent().material=Material1;//将所有的你所要改的材质的物体改成第一个材质 } } voidOnButtonDown2()//按下第二个按钮 { for(inti=0;i<GameObjectUse.Length;i++) { GameObjectUse[i].GetComponent().material=Material2;//将所有的你所要改的材质的物体改成第二个材质 } } voidOnButtonDown3()//按下第三个按钮 { for(inti=0;i<GameObjectUse.Length;i++) { GameObjectUse[i].GetComponent().material=Material3;//将所有的你所要改的材质的物体改成第三个材质 } } }然后找到一个一直存在的物体(不会消失隐藏),把脚本拖给它,将参数拖好,再在button里面去设置每个button对应的事件就行了
E. 如何使用unity3d制作出真实的物理效果
给物体添加物理特性即可,在属性里面,使其具有碰撞,重力等物理性质
F. unity3d怎么给物体上材质球,贴图
创建材质球:在Project面板中选中Assets文件夹,对着Assets文件夹右键,然后点击Create,然后选择Material.
给材质球增加贴图:在电脑中选择你要的图片,然后把图片拖进Project面板中的Assets文件夹。选择你创建的材质球,在Inspector面板中找到Albedo属性,点击该属性左边的小圆,这时候会弹出一个窗口,你只要在弹出的窗口中选择拖进Unity 3D的图片,让后关闭弹出的窗口即可。
给物体上材质球:有两种方式,一种是把制作好的材质球拖到Scene面板中的物体,另一种是把制作好的材质球拖到Hierarchy面板中的物体。
G. unity3d的材质怎么安装 还是自带的 弄好后怎么用笔刷刷上去
材质可以用Unity3d创建,在project栏单击右键然后有个选择创建material项,当然如果你导入用3dmax做的模型的话,你也可以发现会有对应的材质导入进来。材质弄好后,你选择要赋予该材质的模型,然后把你刚才创建好的材质拖到该模型就可以了。另外你说的用笔刷的只能刷地形,也就是说笔刷只能改变地形,对模型就无能为力了。网上有个外国人的关于unity3d的很好的教程,你可以搜索一下看一下。
H. 画好了材质怎么导入Unity里面使用
有两个方法可以在3dsmax场景中导入相应材质球:
第一种方法:
1 点击材质编辑器里的获取材质按钮(下图红圈1处),在弹出的材质/贴图浏览器里点击左上角的黑色倒三角按钮,选择打开材质库。
2 在路径里找到对应的材质文件加载。选择一个材质球,在材质/贴图浏览器里双击材质文件,材质球上就有了材质。
第二种方法:
以合并的方式导入有相应材质的模型文件,先Alt+q,孤立对象,渲染,渲染没有错误,就是可以使用的模型文件,用吸管吸取对应的模型上的材质,这样,材质球上就有了需要的材质。
I. unity3d 如何导入物理材质(一个已有的 xxx.physicMaterial)
自带的包有这个物理材质,右键import就看到了
J. 如何让unity中物理效果更加逼真
如何让unity中物理效果更加逼真
物理可能不是每个人最喜欢的那个科目,但事实是,物理学在游戏行业的发展中起着非常重要的作用。
想象在这样一个情况下:你终于决定要做一些大事情!一些值得注意的事情!有很多现实物理和图形的大事情!这是一个大游戏,一切都岌岌可危!
设计已经完成了,架构也已经弄好了,看上去一切就绪。但是这时候你开始实现最有技巧的那个部分:”游戏的物理部分”!
一切都开始分崩离析,你遇到了低FPS、奇怪的运动、碰撞/触发方面的问题,CPU使用率很高以及其他各种各样的问题。
错误或不适当的物理表现可以赶走潜在的玩家。而且它涉及的不仅仅是物理表现的不正确,它还会让一个原本流畅的游戏体验变得延迟不舒服。
让物理部分表现的很恰当而且不影响效率是不容易达到的。的确,物理是游戏开发过程中最困难和最重要的一部分,而且你根本避不开,必须面对它!
人们可以争论说,“好的物理表现需要非常快的CPU!”
但是相信我这并不总是真的!大多数时候可以通过深入分析Unity的原理来获得适当的物理表现!以及通过学习它是如何工作的来让物理部分表现的更好。
当我还是一个初学者的时候,我不得不处理100件和物理部分有关的事情。它大概花费了我一年的时间,我才记下在处理物理部分的时候需要记住的要点!
所以我决定写这篇文章,来帮你跳过这个痛苦的学习阶段,并成为游戏物理部分的专业开发人员!
我不会谈论如何使用Unity的物理部分,而我将列出技巧和要点来告诉你该如何优化你的游戏物理部分,所以如果你是一个初学者的话,我会建议你首先对Unity的物理部分有一个大概的了解。
因为物理是一个非常、非常、非常、非常(还可以有很多非常进行修饰:P)巨大而广泛的概念,我决定分成几个不同的部分和并尽可能的简化。
所以让我们开始吧!系好你的安全带,这将是一个漫长而愉快的旅程。
降低固定的更新时间间隔。。。!
Unity的文档是这么描述的,”物理部分的计算与更新是与帧速率无关的,FixedUpdate()时间也是与与帧速率无关的”。这个默认值是0.02(单位是秒),这意味着每20毫秒物理部分将要更新一次。所有的FixedUpdate() 函数也是20毫秒执行一次。
但是如果你的游戏不是严重依赖物理部分的话,你总是可以增加时间间隔,从而获得更好的结果。(即减少物理部分的调用)。
你需要对这个值进行测试调整来得到理想的效果。
让我们举个简单的例子:
“如果你要做一个简单的纸牌游戏,没有太多使用物理的地方。最好是减少调用物理引擎的次数。但是需要记住这么一个事情:如果你把调用物理引擎的次数减少的太多的话,你可能不会得到恰当的物理表现。”
让我们通过下面这些例子来更好的理解这个事情
1在场景中摆放3- 4球。让他们彼此相隔一定距离。
2创建一个物理材料,并将摩擦系数减少为0,并将反弹系数设为1。
3将新创建的物理材质附加到球体的碰撞体物理材质上。
4给球体添加刚体组件(这将向引擎表明它是一个物理物体)。
5在场景中摆放一个平面,并且按需要来给这个平面添加物理材质。
6让球体保持在平面上的一定距离,并且让重力影响这些球体。
7按下播放键,检查结果。
这些球体会不停的弹上弹下。
这与固定时间步长有什么关系?
上面这些只是一些预设置,现在我们来调整下固定的时间步长值。
在菜单栏里面找到Edit >> Project Settings>> Time ,在这里你将看到Fixed Time Step Value:the value will be around 0.02(正如我之前提到的那样)。
现在把这个值提为0.1,然后再执行游戏。
你注意到区别是什么了么?
首先你会注意到球体有一些运动滞后。
其次,球体不会反弹了,而是直接穿过了平面。
为什么会这样?(不需要跳动的如此之快:P)
如果你把固定时间步长设置为0.1,那么这意味着物理部分的更新将每100毫秒发生一次,这很明显的有点过长了,并且将无法将测到碰撞。
这表明过多的降低固定时间步长也不是个很理想的情况。现在让我们改变时间步长为更实用的值0.03 - 0.04(根据你的球体的设置可能会有所不同)。
现在如果你执行游戏的话,你将无法看到任何变化。只要物理看起来适合你,那就没关系。如果你仔细检查的话,物理碰撞会略有不同。