u3d中加了第一人称u3d地面贴图怎么都飞起来了

用Unity3D创建简单场景漫游 - 推酷
用Unity3D创建简单场景漫游
来源:第三维度
作者:未知
1.建模中使用的图片、文件、文件夹等以及模型中物体、材质等的名称都不能使用中文或者特殊符号,可以使用英文字母、数字、下划线等
2.调整Max的单位为米
3.烘培光影的设置
4.模型的中的植物效果,第一种是单面片植物,需要设置其轴心为其物体的对称中心;第二种是十字交叉的植物效果;第三种则是到Unity3D编辑器中通过地形编辑器系统添加
5.Fbx导出插件下载地址:
6.将Max文件中用到的图片都拷贝到Textures目录下,如
7.再打开Max文件,导出为FBX文件,使用默认设置,FBX文件也放置在和Max文件相同的目录下,如
导出的时候,可以将模型简单的分类,如地面、植被、楼房等,也可以将模型分为几个区域,如小区1,小区2,学校等等分开导出
8.将包含Max文件、Fbx文件和Textures文件夹的文件夹拷贝到Unity3D项目的Assets目录下,如下图中红圈
在下一次用Unity3D编辑器开启本项目的时候,编辑器将自动导入/更新该文件夹中的信息,并生成Materials文件夹,如
9.启动Unity3D编辑器
10.选择刚才拷贝进来的文件中的Fbx文件,如
修改其中的Meshes下的Scale Factor和Generate Colliders,如
点击其他Fbx文件或者单击其他区域将弹出如下的对话框
点击Apply即可,类似的方式设置其他Fbx文件
注意,其中植物/植被类的Fbx文件不需要设置Generate Colliders项
11.将Fbx文件直接拖放到Hierarchy区域,如
12.点击Hierarchy区域中的对象,同时将鼠标移动三维显示区域,同时点击键f,则该对象自动适配显示到三维区域中心,如
13.将全部fbx添加完成后,提高场景亮度如下
单击Ambient Light,如下
即可设置完成
14.设置第一人称浏览
删除场景中Main Camera
将Project区域的Standard Assets下的Prefabs下的First Person Controller拖到Hierarchy区域中
点选First Person Controller,调整First Person Controller的位置到场景中合适的位置,并设置其高度为1.37到2.1左右
设置First Person Controller的高度在场景中地面之上
15.点击运行,即可测试
修改视角控制键为右键
16.打开Project区域中的StandardAssets下的CameraScripts下的MouseLook脚本,在
在Quaternion originalR
void Update ()
{if (axes == RotationAxes.MouseXAndY)
// Read the mouse input axis
中添加一行代码修改为
Quaternion originalR
void Update ()
if(Input.GetAxis (&Fire2&)==0)
if (axes == RotationAxes.MouseXAndY)
// Read the mouse input axis
如何取消浏览窗口上的右键菜单
只要设置Unity对象的参数即可禁止右键菜单的显示,如下:
&object id=&UnityObject& classid=&clsid:-DE89-A-D46C3A781394&
width=&600& height=&450&codebase=&
UnityWebPlayer.cab#version=2,0,0,0&&
&param name=&src& value=&MyDataFile.unity3d& /&
&param name=&disableContextMenu& value=&true& /&
&embed id=&UnityEmbed& src=&MyDataFile.unity3d& width=&600& height=&450&& type=&application/vnd.unity& pluginspage=&
&& disableContextMenu=&true& /&
植物效果设置
17.对于单面片的植物效果,需要设定其材质为Transparent/VertexLit类型,并为其添加公告板脚本
设置材质类型为Transparent/VertexLit类型,如下
给单面片植物添加公告板脚本的方法是先选择该植物,然后点击菜单component下的scripts下的camera Facing Billboard即可,如下
设置材质类型和添加公告板脚本后,如下
如果没有该脚本组件,可以打开脚本编辑器,拷贝如下代码到脚本中,保存到Assets\Scripts下,命名为CameraFacingBillboard.cs即可
usingUnityE
using System.C
public class CameraFacingBillboard : MonoBehaviour
public Camera cameraToLookAt;
void Start()
cameraToLookAt = Camera.
void Update()
Vector3 v = cameraToLookAt.transform.position - transform.
v.x = v.z = 0.0f;
transform.LookAt(cameraToLookAt.transform.position - v);
18.对于十字交叉的植物,需要将其材质设定为Nature/Vegetation Two Pass unlit类型
设置前的效果
设置后的效果
水面效果的设置
19.创建一个网格面片
20.给该水面面片设置水材质和水脚本,如
烘培光影贴图的处理
21.Unity3D光影烘培的要求
U3D的光影贴图使用的是3Dmax中的标准材质的自发光贴图通道来存储光影贴图相关参数,如
22.给每个物体都附上贴图,如果是纯色物体,也付给纯色贴图
23.打光后,选择要烘培的物体
设置输出路径
添加烘培输出的贴图类型
添加“LightingMap”类型
设置烘培贴图大小和目标贴图位置为“自发光”
设置烘培材质,选择“输出到源”
点击“渲染”即可
24.标准材质贴图的烘培光影处理
a)物体据有标准材质
b)烘培渲染后,物体具有两个贴图
c)导出Fbx即可
25.多重子材质贴图的烘培光影处理
a)物体据有多重子材质贴图
b)渲染烘培后每个子材质都据有两个贴图
c)选择该物体,执行“多维材质2标准材质.ms”脚本,将该多维材质物体按其材质数量分解为标准材质的多个物体,新物体的名字以“原多维材质物体名字~其材质名称”命名,如&
点击“开始转换”,则将该物体从多维材质物体按期子材质分解为多个具有标准材质的物体
d)将全部的具有多维材质类型的物体分解完成后,即可导出
26.多个物体使用同一贴图的烘培光影处理
因为我们在导入fbx文件到Unity3D编辑器中的时候,使用的都是按贴图来生成材质文件,所以多个物体使用同一贴图时会发生错误,修改其中任何一个的材质设置时,其他的使用该贴图的物体都会受到影响,解决的方法便是在Unity3D编辑器中生成一个具有该贴图的新材质,然后重新付给当前物体。
27.在U3D编辑器中修改物体的材质类型为光影贴图
设置物体的材质类型为Lightmapped/Diffuse
根据物体的名称将对应的光影贴图拖动到Lightmapp域,其中标准材质物体的光影贴图名称是“其物体名称LightingMap.tga”;从多维材质类型转换过来的物体的光影贴图名称是“其物体名称中~符合前的部分LightingMap.tga”
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致程序写累了,就来玩玩酷跑小游戏吧,嘿嘿。
雨松MOMO送你一首歌曲,嘿嘿。
Unity3D研究院之角色控制器组件研究(二十二)
Unity3D研究院之角色控制器组件研究(二十二)
围观29440次
编辑日期: 字体:
Unity3D封装了一个非常好用的组件来实现第一人称视角与第三人称视角游戏开发,我们称他为角色控制器组件,几乎不用写一行代码就可以完成一切的操作,神奇吧。使用它的方法如下,首先打开Unity游戏引擎编辑器,然后在Project视图中右键选择Import Package -& Charactr Controller(角色控制器)把它导入我们的工程中。如下图所示,第一人称与第三人称的组建已经加入Project视图中。3rd Person Controller 表示第三人称控制器,First Person Controller表示第一人称控制器。
如下图所示,我们将FirstPerson Controller拖拽入Hierarchy(层次视图)中。由于角色控制器是具有一定物理引擎的,所以一定要将它放在地形或面对象之上,否则当它接收物理效果时发现地面没有东西支撑它,它就会掉下去。然后运行游戏你就会发现和CS中的第一人称效果非常相像, W、S、A、D移动人物行走,移动鼠标更改行走的方向,空格键人物会跳跃。
第一人称视角的实现原理是在游戏场景中创建了一个胶囊体的游戏对象,并且给胶囊体对象身上绑定了一个摄像机,摄像机对象如下图所示,它绑定在”Person Controller”中。这时场景中默认的摄像机就会失效,可以直接删掉默认的摄像机。通过按键控制这个胶囊体移动,通过鼠标修改胶囊体的朝向,此时你就会发现第一人称视角已经完全实现,目前为止我们不需要编写一行代码。目前场景中的天空盒子我是使用skyBox组件绑定在摄像机中,因为第一人称视角的摄像机对象在”Person Controller”中,所以需要将SkyBox组件绑定在这个摄像机中,如果绑定在默认摄像机中那么你将不会看到天空的效果。
(点击图片查看大图)
下面我们在看看第三人称视角,如下图所示,在Project视图中将3rd Person Controller拖拽入Hierarchy视图中。第三人称视角需要使用我们原有的摄像机,如果刚刚将摄像机的删掉的话。在Hierarchy视图中点击Creat-&Camera 即可。然后选择摄像机,在右侧Inspector视图中设置它的tag为MainCamera,如下图所示。最后在Hierarchy视图中选择3rd Person Controller,在右侧Inspector视图中将Third Person Camera 脚本的 Camera Transform 变量绑定上刚刚创建的主摄像机,此时运行游戏后以第三人称视角移动主角行走与跳跃,摄像机永远都会在跟随在后面除非修改角色控制器组件中默认提供的源码,源码都在右侧监测面板视图中直接点开就可以查看。
(点击图片查看大图)
下面我们学习角色控制器组件在其它模型之间的应用。首先在Hierarchy视图中创建两个Cube(立方体对象) 命名为:Cube0(发出碰撞的对象)Cube1(接收碰撞的对象),然后在Hierarchy视图中选择Cube0对象,接着Unity导航菜单栏中选择Component(组件)-Character-&选择任意一个角色控制属性。 补充一句,角色控制器组件一定要在Project视图中导入,否则这里将无法绑定组件。角色控制器组件因为与碰撞组件相互冲突,所以添加角色控制器组建后Collider组件就会消失。下面我们实现一段简单得代码,使用添加过角色控制器组件的Cube0 去碰撞未添加角色控制器组件的Cube1。
123456789101112131415161718192021222324252627282930313233343536373839404142
using UnityEngine;using System.Collections;&public class Test : MonoBehaviour {& //主动碰撞的对象名称 string castName = null;& //接收碰撞的对象名称 string receiveName = null;& void OnGUI () &&&&{&
if(castName!= null && receiveName !=null)
//设置显示的颜色为黑色
GUI.color = Color.black;
&&&&//显示主动碰撞的对象 与接收碰撞的对象名称 &&&& GUI.Label(new Rect(100,100,200,30),"主动碰撞的对象名称"+castName); &&&& GUI.Label(new Rect(100,200,200,30),"接收碰撞的对象名称"+receiveName);
} }& //角色控制器组件在与具有Collider组件对象之间的碰撞 void OnControllerColliderHit(ControllerColliderHit hit) {&
//得到接收碰撞名称
GameObject hitObject = hit.collider.gameObject;&
//当它不是地面时间
if(!hitObject.name.Equals("Terrain"))
//得到主动碰撞的对象 与接收碰撞的对象名称
castName = gameObject.name;
receiveName = hitObject.name;
将上面这段代码绑定在Cube0中,运行游戏后W、A、S、D按键来控制Cube1立方体移动。当Cube0与Cube1发生碰撞时,程序将进入方法OnControllerColliderHit(),通过参数就可以得到接收碰撞的游戏对象也就是Cube1对象,而gameObject就是当前主动发生碰撞的Cube1。如下图所示,当两个立方体碰撞时使用GUI已经将碰撞的信息打印出来。
接着我在说说刚体组件,默认在Unity中创建的模型是不具备接收物理引擎的,除非给模型添加刚体组件或角色控制器组件。我们先说说刚体,还用奋斗的小鸟来举例子。发射小鸟以后,小鸟以一个抛物线轨迹去撞击物体,发生碰撞后被碰撞的物体会根据小鸟撞击的角度以及力度发生不同的物理效果,并且几乎是完全模拟真实的物理引擎。但是这种物理引擎的效果不能绑定在比如RPG游戏的主角身上。原因很简单,因为刚体所添加的物理引擎太过于真实以至于会影响用户的对主角的操作,举个例子比如用户在控制主角移动时他碰撞到质量较大的物体,根据真实的物理引擎会被这个物体的反弹力把主角反弹回原位。但是这个是不符合逻辑的,因为刚体组件太过于物理话了,所以我们需要给主角添加角色控制器组件,它操作起来比较灵活,更容易让我们操作主角。
下面我们给Cube1对象绑定刚体组件,选择Cube1对象然后在导航菜单栏中选择Component-&physics -&Rigidbody(刚体)。我们看看下面这段代码,使用添加了角色控制器组件的Cube0 去碰撞添加刚体组件的Cube1,当他生碰撞时计算一下Cube0碰撞Cube1时的碰撞角度向量,然后通过刚体向他施加一个力把它推开。
123456789101112131415161718192021222324
using UnityEngine;using System.Collections;&public class Test : MonoBehaviour {& //角色控制器组件在与具有Collider组件对象之间的碰撞 void OnControllerColliderHit(ControllerColliderHit hit) {&
//判断碰撞的对象是否具备刚体组件
GameObject hitObject = hit.collider.gameObject;
Rigidbody rigidbody = hitObject.rigidbody;
if(rigidbody != null && !rigidbody.isKinematic)
//地面也具备刚体组件,这里判断一下
if(!hitObject.name.Equals("Terrain") )
rigidbody.AddForce(new Vector3(hit.moveDirection.x, 0, hit.moveDirection.z) * 10);
也可以将同样的脚本直接绑定在第三人称的角色控制器组件中。如下图所示,主角移动将周围的箱子都推开了。
总的来说角色控制器组件适用于 既需要感应物理引擎的支持但是又不能完全依赖与物理引擎,需要自己代码去编写一些东西的模型,所以非常适合游戏中主角对象的使用。雨松MOMO祝大家学习愉快,哇咔咔。
本文固定链接:
转载请注明:
雨松MOMO提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。
您可能还会对这些文章感兴趣!U3D做第一人称游戏怎么弄出夜视仪或画面噪点等特殊效果_unity3d吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:56,729贴子:
U3D做第一人称游戏怎么弄出夜视仪或画面噪点等特殊效果收藏
火星时代unity3d,争当游戏大触,月薪过万小意思,手绘技能,概念设计,商业应用一步到位,你与u3d游戏特效设计师只差一步,赶快点击吧!
image effect 夜视的话用颜色纠正,噪点用noise
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或后使用快捷导航没有帐号?
只需一步,快速开始
查看: 8036|回复: 356
U3D第一人称射击游戏源码包~~~
TA的其他好贴
CG模型下载
CG模型种类:
CG模型风格:
CG模型类别:
是否有动画:
CG模型格式:
马上注册,加入CGJOY,享用更多功能,让你轻松玩转CGJOY。
才可以下载或查看,没有帐号?
好东西一定要顶~~~
游客,如果您要查看本帖隐藏内容请
(393.11 KB, 下载次数: 70)
11:02 上传
(275.84 KB, 下载次数: 45)
11:02 上传
(287.7 KB, 下载次数: 33)
11:02 上传
(390.72 KB, 下载次数: 38)
11:02 上传
组图打开中,请稍候......
好东西。。。。顶一个
非常不错哦
谢谢分享!!
谢谢楼主分享
看看!!!
谢谢LZ分享~~支持LZ~
免费下载??
喜子老师U3D高级班
掌握VR游戏制作就等于将前途放在了口袋中
【奖15张券】提高账户安全,完善个人资料!
Powered by}

我要回帖

更多关于 u3d怎么建地面 的文章

更多推荐

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

点击添加站长微信