unity3d vr 开发开发的大型游戏教程?

传智播客Unity3D游戏开发公开课视频教程
- 爱酷学习网,免费高清视频教程在线观看
Begin to Learn
Descritpion
Unity3D是一个非常好的3D游戏开发引擎,甚至于说是当前3D游戏开发的行业标杆。本视频教程是传智播客出品的一套入门级Unity3D视频教程,讲解了Unity3D的基础知识以及如何学习Unity3D,是一个很好的Unity3D入门视频教程。从整体上来说,如果你想要或者正在学习如何开发Unity3D游戏的话,本视频教程非常值得你观看。
相关资料:
Update Completed
请输入正确的邮件(格式:xxx@xxx.xx)
必须填本条信息!查看: 8860|回复: 36
Unity游戏开发实战(经典基础教程,中文版)
2级会员(论坛居民)主题帖子CG券
2级会员(论坛居民), 积分 97, 距离下一级还需 103 积分
2级会员(论坛居民), 积分 97, 距离下一级还需 103 积分
原书名:Game Development with Unity
原出版社:Course Technology PTR
作者:(美)Michelle Menard [作译者介绍]
译者:史晓明李强
丛书名:游戏开发技术系列丛书
出版社:机械工业出版社
上架时间:
出版日期:2012 年4月
开本:16开
所属分类:计算机 & 游戏 & 综合
《unity游戏[1]开发实战》结合unity这种多平台的集成引擎和编辑器,介绍如何使用unity创建游戏、添加交互性,以及修饰游戏并发布游戏的所有知识。本书分为五部分,每一章都介绍一个独立的概念,并且循序渐进地讲述新的概念,还使用一个综合的游戏项目贯穿全书。在本书中,读者将学到所有重要的界面命令,如何设置和组织项目,以及创建并运行一个3d游戏的所有基础,从角色导入到脚本,再到声音。本书还将介绍基本的游戏和关卡设计理论与特殊的技巧。
《unity游戏开发实战》为读者提供了使用unity来创建自己的游戏所需要的全面信息,适合业余游戏制作人、专业开发人员以及计算机专业的学生阅读
1.jpg (109.29 KB, 下载次数: 32)
11:25 上传
2.jpg (137.64 KB, 下载次数: 29)
11:26 上传
3.jpg (121.44 KB, 下载次数: 31)
11:26 上传
4.jpg (107.85 KB, 下载次数: 32)
11:26 上传
已有 26 人购买&
本主题需向作者支付 5 张CG券 才能浏览
3ds Max & Biped
主讲:祁利东
UNITY3D & PS
主讲:浮生若梦
3dsmax & bones
主讲:熊军
Powered by一项目创建:
创建项目是开发的第一步。
运行untiy之后如果是第一次运行会弹出
我们这里随便创建一个项目。
二Untiy面板介绍:
三代码编辑器的切换:
这里我安装了vs2012.
到这里开发环境基本上就算是搭好了,您坑定迫不及待的想做开发了吧。先等一等,容我先来介绍一下一些3d方面的基础知识。
一、坐标轴
  说到坐标轴,很多同学第一时间想到的可能是这样的
不错这也是坐标轴,只不过这里是二维坐标轴,untiy里面是3D坐标轴。讲到3D坐标轴不得不讲一下,3D坐标轴分为左手坐标轴系和右手坐标轴系(两者的区别请百度)。unity则用的是左手坐标系。
今天就先说到这,有任务来了。回家接着更新。
x轴正方向向右,y轴正方向竖直向上,z轴垂直屏幕向里。
阅读(...) 评论()Unity小作品游戏精选推荐(部分作品含源代码)
Unity3D是全面集成的开发引擎,具有丰富的开包即用功能,可以用来创建游戏和其他3D互动内容。你可以使用Unity3D将你的艺术和素材配置到场景和环境中;添加物理性能;虚拟游戏测试并编辑你的游戏,一切完备就绪后,发布到你选择的平台,如台式电脑、网络、iOS、安卓、Wii、PS3、Xbox 360和WP8等。
下面我就推荐一些个人Unity游戏作品,部分包含作者开放的源码,感谢原作者的分享,同时也鼓励大家能上传自己的作品,开放源码!
Unity官方自带Demo,包含源码、贴图素材、视频教学及三种脚本不同的写法,适合刚入门学习的新手.
推荐指数:★★★★★
本人也不算厉害的人物,所以代码等等诸多地方也未必就做到很好,不少地方也优化不足,希望大家互相多交流交流,以便共同...
推荐指数:★★★★★
类似雷霆战机那样的射击游戏,附带游戏源码,可生成游戏直接玩,比较简单,可以参考学习...
推荐指数:★★
未完成作品,里面包含了赛车模型、跑道及城市建筑。可以接着源代码继续开发,类似赛车游戏...
推荐指数:★★★
在植物大战僵尸2风靡全球的今天,自己也想做一款,那么本项目可做参考,附带源码素材及JS脚本带注释,对Unity的学习...
推荐指数:★★★★
游戏采用VS2010+Unity4,纯C#开发,游戏资源均从Unity的资源商店搞的,只是个DEMO,这个DEMO我才搞了10天...
推荐指数:★★★★
由策划同学想的一个在车上模拟晕车的状况。根据右上角的方向来按键,然后如果那个如花同学转头过来看你...
推荐指数:★★★
此游戏虽然简单,但是还有很多值得学习的地方,主要用到碰撞检测及图片动画的实现两大块...
推荐指数:★★★
一个用Unity3D完成的简单的密室逃脱游戏,小学期课程设计作品,时间仓促,尚有很多不足之处。
推荐指数:★★★
面对令人头晕目眩的高度和望而生畏的深度,控制一个球在一个充满铁轨、木桥等机关的超真实世界中遨游...
推荐指数:★★★★
面对令人头晕目眩的高度和望而生畏的深度,控制一个球在一个充满铁轨、木桥等机关的超真实世界中遨游...
推荐指数:★★★★
游戏的操作很简单,控制旋转的方向,保持小球朝向着改方向发射,知道小球被球杆打进洞,表示推杆完成...
推荐指数:★★★★
这次的游戏,从题材上看是没什么新意的,就是打地鼠,但融入了地下城与阿赵里面的角色和场景...
推荐指数:★★★
我准备把对如何用Unity3D制作愤怒的小鸟的研究过程记录下来,希望能完成愤怒的小鸟游戏的大部分功能...
推荐指数:★★★★
加了一个子弹的碰撞效果,这个东西搞了我半天,rigidbody加入好子弹漫天乱飞,一个小弹幕游戏的雏形就出来了...
推荐指数:★★★★
未完待续,大家可提供自己的作品到....
/ Past Events
版权所有(C) 2006SunHowe的个人博客
【Unity3D实战】零基础一步一步教你制作跑酷类游戏(填坑完整版)
在两个月前曾写了一篇《【Unity3D实战】零基础一步一步教你制作跑酷类游戏(1)》,里面一步一步演示了制作跑酷类游戏,然而由于时间原因,只写到了让角色往前移动为止。这个坑一直没有时间去填,(虽然也没多少人看啦),今天刚好有时间完成了一个跑酷类游戏的Demo。放上来给有兴趣的朋友看看。
Demo源码及对应素材下载:链接: https://pan.baidu.com/s/1smnQFt7 密码: ptcw
游戏简要说明
游戏类型:跑酷类游戏(Demo,非完整游戏)
操作方式:左右方向键(可自己移植到手机端)
游戏要素:
1.游戏角色会自动向前跑,玩家可通过左右方向键让其左右移动
2.游戏中存在障碍物,玩家需避开这些障碍物,否则会因为被障碍物阻挡的原因无法前进
3.当游戏角色因为被阻挡而消失在视野中时,视为失败
4.当游戏角色因为被阻挡而处于偏后方时,会提高移动速度直到回到原本所处的屏幕位置
游戏场景搭建
使用准备好的素材(路面、人物、障碍物),将这些素材制作成Prefab,然后根据自己喜好搭建好场景(如何搭建请看上一篇教程:《【Unity3D实战】零基础一步一步教你制作跑酷类游戏(1)》)。如下图:
游戏脚本编写
游戏角色控制器moveController:
新建一个C#文件,命名为moveController,然后将其打开。
由于角色需要向前、左、右三个方向移动,所以我们需要有其在前进方向上的速度与左右方向上的速度,分别命名为:moveVSpeed、moveHSpeed,
同时由于玩家在落后的情况下需要加速,所以我们声明两个变量:前进方向上的最小移动速度minVSpeed与前进方向上的最大移动速度maxVSpeed。
于是我们可以得到以下脚本:
// 前进移动速度
float moveVS
// 水平移动速度
public float moveHSpeed = 5.0f;
// 最大速度
public float maxVSpeed = 10.0f;
// 最小速度
public float minVSpeed = 5.0f;
其中moveHSpeed、maxVSpeed、minVSpeed声明为public,方便在面板上修改。
错误修改:感谢 jewis123 朋友提出的,这里漏了jumpHeight与m_jumpState的定义,前者代表最大高度,后者代表当前是向上跳跃,还是从高处落下,详细可查看源码。
接下来,在Start()函数中定义moveVSpeed的初始值:
moveVSpeed = minVS
在Update()中使人物能移动起来:
float h = Input.GetAxis("Horizontal");
Vector3 vSpeed = new Vector3(this.transform.forward.x, this.transform.forward.y, this.transform.forward.z) * moveVS
Vector3 hSpeed = new Vector3(this.transform.right.x, this.transform.right.y, this.transform.right.z) * moveHSpeed *
Vector3 jumpSpeed = new Vector3(this.transform.up.x, this.transform.up.y, this.transform.up.z) * jumpHeight * m_jumpS
this.transform.position += (vSpeed + hSpeed + jumpSpeed) * Time.deltaT
保存一下cs文件,切换到Unity,将该脚本挂载在角色对象的身上,保留默认值或手动设置:
运行游戏,看看是否能成功跑起来,并且能通过左右键控制人物左右移动。
看着人物越跑越远越跑越远,最后消失在远方......诶!教练,这和说好的不一样啊!人物咋不见了?
咳咳,这是因为我们没有让摄像机跟随它的原因,接下来,我们让摄像机与人物一起移动~
打开刚才的C#文件,声明一个public的变量
// 摄像机位置
public Transform cameraT
在Update()函数中,添加以下代码:
// 设置摄像机移动速度
Vector3 vCameraSpeed = new Vector3(this.transform.forward.x, this.transform.forward.y, this.transform.forward.z) * minVS
// 让摄像机跑起来
cameraTransform.position += (vCameraSpeed) * Time.deltaT
注意到没,这里我们所定义的摄像机的移动速度与人物移动速度有点差别:
1.摄像机没有左右移动
2.摄像机的速度恒定为minVSpeed,也就是我们所定义的人物的最小移动速度(当然这个时候人物也一直是以这个速度在移动)
转到Unity,查看人物身上的Move Controller组件,现在这里应该多了一个变量等你设置:
我们将摄像机拖动到camera Transform处,再运行游戏。这时候你应该能看到人物在不断往前走,但在屏幕上的位置是没有变化的,因为摄像机一起移动了。
人物走着走着 哎呀 前面怎么没路了?别急,让我们来让路无限延长起来~
首先我们将道路的GameObject复制几个,我这里是总共有3个道路的GameObject,分别命名为Road1,Road2,Road3
然后在每一个Road下,添加一个Cube,将Cube的Mesh Renderer关闭,并将其Box Collider的Is Trigger勾上。命名为ArrivePos。(我才不会告诉你们这一步应该在上一行之前做呢!)
将多条道路拼好,连成一条笔直的公路。
然后新建一个空物体,命名为GameManager,为其新建C#Script
GameManager.cs,然后打开该脚本。
声明一下多个变量:(注意引用命名空间using System.Collections.G
// 生成障碍物点列表
public List&Transform& bornPosList = new List&Transform&();
// 道路列表
public List&Transform& roadList = new List&Transform&();
// 抵达点列表
public List&Transform& arrivePosList = new List&Transform&();
// 障碍物列表
public List&GameObject& objPrefabList = new List&GameObject&();
// 目前的障碍物
Dictionary&string, List&GameObject&& objDict = new Dictionary&string, List&GameObject&&();
// 道路间隔距离
public int roadD
并定义函数:
// 切出新的道路
public void changeRoad(Transform arrivePos)
int index = arrivePosList.IndexOf(arrivePos);
if(index &= 0)
int lastIndex = index - 1;
if (lastIndex & 0)
lastIndex = roadList.Count - 1;
// 移动道路
roadList[index].position = roadList[lastIndex].position + new Vector3(roadDistance, 0, 0);
initRoad(index);
Debug.LogError("arrivePos index is error");
void initRoad(int index)
string roadName = roadList[index].
// 清空已有障碍物
foreach(GameObject obj in objDict[roadName])
Destroy(obj);
objDict[roadName].Clear();
// 添加障碍物
foreach(Transform pos in bornPosList[index])
GameObject prefab = objPrefabList[Random.Range(0, objPrefabList.Count)];
Vector3 eulerAngle = new Vector3(0, Random.Range(0, 360), 0);
GameObject obj = Instantiate(prefab, pos.position, Quaternion.EulerAngles(eulerAngle)) as GameO
obj.tag = "Obstacle";
objDict[roadName].Add(obj);
在Start()中:
void Start () {
foreach(Transform road in roadList)
List&GameObject& objList = new List&GameObject&();
objDict.Add(road.name, objList);
initRoad(0);
initRoad(1);
然后打开之前的moveController.cs,声明变量:
// 游戏管理器
public GameManager gameM
定义函数:
void OnTriggerEnter(Collider other)
// 如果是抵达点
if (other.name.Equals("ArrivePos"))
gameManager.changeRoad(other.transform);
// 如果是透明墙
else if (other.tag.Equals("AlphaWall"))
// 没啥事情
// 如果是障碍物
else if(other.tag.Equals("Obstacle"))
呼,一大串代码,大家敲的累不累,什么!你是copy过去的?太过分了!我要拿刀子了!
嗯,切换回Unity中,点击GameManager这个物体,设置其GameManager组件的值:
这里的BornPos指的是障碍物出生点,以下图所示为每一条道路定义一个或多个出生点,每条路的出生点用一个BornPos的空物体进行管理:
然后将出生点按其所处道路的序号一一拖入(先设置size的值,3条就设置为3)
RoadList也是一样,将道路按序号一一拖入。
这里的ArrivePosList要注意一下,并不是直接按道路序号拖入,而是往后一位,即:
road1这样的顺序将其对应的ArrivePos拖入列表
然后将需要生成的障碍物的Prefab文件拖入ObjPrefabList
设置道路的间隔距离(即一条道路的中心点到接下来一条道路中心点的距离 distance = road1.length / 2 + road2.length / 2 大概这么计算)
到这一步为止,GameManager的设置基本完成。点击人物的GameObject,设置moveController,将GameManager的游戏对象拖入到指定位置:
对了,还有一步非常重要的设置:
为人物添加Collider与RightBody,为所有障碍物和路面添加Collider(注意不要勾上Is Trigger)
然后运行游戏。
呼,这时候没有问题的话应该是能看到有障碍物出现了,人物走到障碍物处会被挡住,并且道路会自动拼接移动,无止境的走下去、走下去、走下去。。。
这个Demo也基本进入尾声了,接下来,做最后的游戏失败判断和让角色赶回正常位置。
打开GameManager.cs,声明变量:
public bool isEnd =
打开moveController.cs 声明变量:
// 摄像机距离人物的距离
public float cameraD
在Update()函数中 添加以下代码:
// 当人物与摄像机距离小于cameraDistance时 让其加速
if(this.transform.position.x - cameraTransform.position.x & cameraDistance)
moveVSpeed += 0.1f;
if (moveVSpeed & maxVSpeed)
moveVSpeed = maxVS
// 超过时 让摄像机赶上
else if(this.transform.position.x - cameraTransform.position.x & cameraDistance)
moveVSpeed = minVS
cameraTransform.position = new Vector3(this.transform.position.x - cameraDistance, cameraTransform.position.y, cameraTransform.position.z);
// 摄像机超过人物
if(cameraTransform.position.x - this.transform.position.x & 0.0001f)
Debug.Log("你输啦!!!!!!!!!!");
gameManager.isEnd =
定义OnGUI()函数:
void OnGUI()
if (gameManager.isEnd)
GUIStyle style = new GUIStyle();
style.alignment = TextAnchor.MiddleC
style.fontSize = 40;
style.normal.textColor = Color.
GUI.Label(new Rect(Screen.width / 2 - 100, Screen.height / 2 - 50, 200, 100), "你输了~", style);
到这一步,Demo编写完成。(由于现在是凌晨4点 实在太疲惫,所以本篇基本都是直接贴代码,如果有朋友有什么问题的话 可以直接留言哈~)
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!

我要回帖

更多关于 unity3d 2d游戏开发 的文章

 

随机推荐