时间一晃而过,接触Unity也有一段时间了,这期间断断续续,做了一些小东西。虽然学的不多,但是有一点算一点嘛,就把这段时间跟随教程做的实战项目进行一些整理,以作记录。这是这次整理的第一篇,就整理一下Darkwonder吧,siki老师给的中文名是“黑暗奇侠”,虽然流程很简单,但好歹也算是RPG,作为RPG爱好者的我,就用这个作为开端吧。
故事发生在很久很久之前……其实流程十分简短,就是小女孩被坏人抓走,然后小精灵从家里出发历经千辛万苦拯救女主的故事。(故事虽然俗套,但是实践操作学东西才是重点)
游戏开始时,玩家在一个木屋前,这就是起点。玩家控制的角色是屏幕中央的小精灵。
从家里出发沿着小路走一段距离会看到一个修炼场(四周有符文石,闪闪发光)。
然后继续沿着小路前进会来到一片住着很多巨魔的树林,不过他们并不会攻击小精灵。继续深入。
过了一座桥之后会发现一只在路边休息的恐龙,但这些目前来说都是无关紧要的,继续走就对了。
最后到达了一排围栏处,再也无法前进,小精灵听到里面传来的小女孩的呼救声,但是被围栏阻挡无法进入。小精灵灵机一动(手动狗头),恐龙应该可以破坏这些围栏,于是就往回走前去寻求恐龙的帮助。
回到恐龙休息的地方之后,小精灵向他表明自己的请求。但恐龙并不提供免费帮助,他想要小精灵给他找一些吃的。
于是小精灵想到了之前树林里的巨魔和之前的修炼场……那就开始刺激的打怪吧!首先回到修炼场中学习第一个(也是唯一一个)技能。
习得神功之后杀进树林,击杀巨魔之后随机掉落巨魔肉,集满十块巨魔肉就可以去找恐龙帮忙。
回到恐龙休息的地方,把巨魔肉上交给恐龙,他就会欣然帮助小精灵。
这时玩家就获得了恐龙的控制权,可以在小精灵和恐龙之间切换控制。
然后控制恐龙走到围栏处,根据提示破坏围栏后再切换到小精灵进去就能救出无助的小女孩了!
至此游戏结束。
虽然是个非常简短且剧情俗套的小游戏,很多方面也很粗糙,比如几乎没有GUI、操作提示很简陋、视野控制没有完善等等。但也算是我的第一个RPG游戏开发案例,作为RPG粉丝的我对此十分自豪。这个案例是在刚接触Unity时作为入门练习做的,在其中学到了很多Unity开发的基础,如粒子系统、任务控制、利用Collider进行交互等,并且在代码逻辑中对Unity脚本中Start() 、Update() 等方法的巧妙设定有了一些理解。能够将实践融入学习是一种很好的方法,当初学习了一段时间C#的基础语法,那是初次接触面向对象语言,虽然充满了好奇,但是语法熬多了总觉得有那么一些枯燥,也不知道以后能用在什么地方。但是有了案例实践不仅巩固了学到的知识,同时还能激发自己的学习兴趣,也能从中得到一些小小的成就感。之后会继续把目前做完的案例进行总结、复习,以此记录我的学习路径。这仅仅是开始,学习的道路仍旧漫长,希望这份对编程的热爱能够一直保持下去!
在此特别感谢siki学院(www.sikiedu.com)提供的视频教程!
演示视频:http://player.youku.com/player.php/sid/XNDA4OTE4OTM4OA==/v.swf
项目链接:https://github.com/KazeLv/DarkWonder-3D-_unity
基础知识:
粒子系统(Particle System):
Particle System(粒子系统基本设置)
duration 持续时间(每次发射的周期)
Looping 循环开关
Prewarm 预热(让粒子在刚开始发射时就充满整个发射空间)
Start Delay 开始后等待多少秒再发射粒子
Start Lifetime/Speed/Size/Rotation/Color 粒子的生命周期/速度/大小/旋转/颜色
Emission(发射;排放)
Rate 每秒发射的粒子数
Bursts 爆发效果,设置在每个周期的第几秒发生爆发且可以设置爆发数目的范围
Shape(发射扩散器的形状)
Shape 形状
Angle 角度
Radius 半径
Emit from 选择发射源
Renderer(渲染器)
Material 为粒子添加材质
灯光(Light)
Directional Light 直射光;平行光
PointLight 点光源
SpotLight 聚光灯(锥形光源,可模拟手电筒等)
AreaLight 面光源
Unity C# Monobehaviour中的几个重点方法解析
Awake 只在脚本被加载(游戏运行)的时候调用
Start 游戏的初始化,在Awake之后
update 游戏运行过程中不定时地调用
fixedUpdate 游戏运行过程中以固定间隔调用(区别于update)
lateUpdate 在update调用完成之后调用
Time计时类
Time.deltaTime 上一帧到这一帧的间隔时间
GameObject
属性 tag
name
方法 SetActive
如何查找GameObejct
1、拖拽赋值
2、查找
GameObject.Find(string) find by name
GameObject.FindGameObjectsWithTag(string) find by tag(return array)
GameObject.FindWithTag(string) find by tag
GetComponent可以对游戏物体使用也可以对其中的组件使用,效果都是在整个游戏物体中搜索
transform.forward和Vector3.forward;
都表示一个三维向量,transform.forward表示当前游戏物体的z轴方向(0,0,1)Vector3.forward表示世界坐标的z轴方向(0,0,1)
StartCoroutine(调用协程)
void OnGUI(){}; 绘制GUI(每一帧绘制一次)
Rect r=new Rect(left,top,width,height)
GUI.Label(Rect position,string message) 绘制消息
GUI.Button(Rect position,string name) 绘制按钮(有返回值,返回bool表示按钮是否被按下)
组件:
CharacterController(角色控制器) 包含rigidbody和collider
Slope Limit 能够爬上的最大坡度
Audio Listener 相当于耳朵,一般一个游戏场景只会有一个,是游戏声音的接收器
Audio Source 声音源
调用方法:
任何Component(Unity内置的和自定义的脚本)都可以使用.gameObject访问其挂载的游戏物体
void OnTriggerEnter/Stay/Exit 触发器接触函数
Input.GetKey("
Input.GetMouseButton(
Input.GetButton(