Unity 学习笔记2

一:创建粒子效果:
在Hierarchy面板中,Create->Particle System
在Assets文件夹内右键->Import Package->Particle导入粒子效果包
在Hierarchy面板中选中Particle System后,可在Inspectors面板中修改粒子系统的相关参数,来达到不同的粒子效果:

Max Particle:最大生成粒子数量
Prewarm(预热):勾选后,在载入场景之前粒子系统就可以预先生成
Start Lifetime:表示每个粒子可持续的时间,单位:秒
Start Speed:表示粒子运动的速度
Start Size:粒子的大小

1.Emission:
Rate:粒子密度
2.shape(形状):
在这里可以调节粒子系统的形状,大小,这里的形状大小指的是整个粒子系统在场景中所覆盖的面积。还可以勾选Random Direction项让粒子的生成方向成随机形式。
3.Size over Lifetime:
调整粒子在生成到消失时间段内大小的变化。
4.Renderer(渲染器):
调节粒子的材质,可直接用之前导入的粒子效果包来设置。

二:脚本:
1.Start()函数只在游戏开始时执行一次
Update()函数在每一帧执行一次
2.随机出生点函数
在Hierarchy面板新建一个GameObject,将它放到场景中,一个GameObject代表一个出生点,选中新建的GameObject,在Inspector面板中点击Tag项,tag是一个标签性的属性,默认的没有出生点,所以点击Add tag,在Element0选项后命名即可新建一个tag了。在语言编辑器中可以通过tag名来控制出生点。
实现方法是:随机生成一个数字,通过这个数字来在定义好出生点tag的地方选出出生点,其实就是那些空的GameObject,然后将这个出生点的坐标赋值给我们的Player就可以了。

unity生命周期:

渲染

  • OnPreCull: 在相机剔除场景之前调用此函数。相机可见的对象取决于剔除。OnPreCull 函数调用发生在剔除之前。
  • OnBecameVisible/OnBecameInvisible: 在对象对于相机可见/不可见时调用此函数。
  • OnWillRenderObject: 如果对象可见,则为每个相机调用一次此函数。
  • OnPreRender: 在相机开始渲染场景之前调用此函数。
  • OnRenderObject: 在完成所有常规场景渲染后调用此函数。此时,可使用 GL 类或 Graphics.DrawMeshNow 绘制自定义几何图形。
  • OnPostRender: 在相机完成场景渲染后调用此函数。
  • OnRenderImage(仅限专业版): 在完成场景渲染后调用此函数,以便对屏幕图像进行后处理。
  • OnGUI: 在每帧上多次调用此函数,以响应 GUI 事件。程序首先将处理 Layout 和 Repaint 事件,然后再处理每个输入事件的 Layout 和 keyboard/鼠标事件。
  • OnDrawGizmos 用于在场景视图中绘制小图示 (Gizmos),以实现可视化目的。

参考资料:

1.Execution Order of Event Functions http://docs.unity3d.com/Manual/ExecutionOrder.html
2.游戏蛮牛Unity 用户文档1.0 http://www.unitymanual.com/m/Manual/index.htm

三:创建HUD显示界面(显示角色反馈信息):
1.创建一个空的GameObject来装载HUD素材和脚本;
2.导入素材(tga,jpg等),选中素材,在Inspector面板的Texturetype选项选GUI,点击Apply确认更改;
3.选中新建GameObject,Add Component->GUITexture,这一步将GameObject中导入的素材锁定在主相机上;
4.在GUITexture选项的Texture中,可以看到刚刚设定为GUI的素材了,选中一个后就可以在主相机上看到导入的素材了。在Transform选项中,可以调整素材在画面中的位置,在pixel Inset选项中,可以调整素材的大小(??);
5.写更换素材的脚本:
Public Texture2D[] HUD_texture; //在这里创建了一个数组用来存放我们要导入的素材,数组的大小可以在Inspector面板进行设置,设置完size后,可以分别为数组的每一个成员导入素材,真是太方便了。
Public GUITexture HUDTexture;//创建一个GUITexture的变量,他可以给GUI的Texture赋值,赋值对象可以在Inspector面板进行设置,我们设置为刚刚建好的Add了GUI的GameObject就可以了。
剩下的只用按一定规则给GUITexture.texture赋值为HUD_texture中的一个就可以了。

这样可以实现血条,物品等信息,碉堡了。

四:创建物品拾取系统:
1.导入可拾取物体
2.写脚本:
Viod OnTriggerEnter(Collider player)//unity3d自带的的函数,两个有碰撞器的物
体相撞时才触发
{
Play.gameObject.SendMessage("XXXXXX");//XXXXX代表你想触发的函数,比
如上面写的HUD更换素材函数等等。
Destroy(this.gameOject);//删除物体
}
3.注意,要给物体加碰撞器,并且选上trigger项。

注:Rigidbody(刚体)组件可使游戏对象在物理系统的控制下来运动,刚体可接受外力与扭矩力用来保证游戏对象像在真实世界中那样进行运动。任何游戏对象只有添加了刚体组件才能受到重力的影响,通过脚本为游戏对象添加的作用力以及通过NVIDIA物理引擎与其他的游戏对象发生互动的运算都需要游戏对象添加了刚体组件。

其实就是接受物理作用的组件

碰撞体(Collider)的官方(摘自Unity3d的官方指导书《Unity4.x从入门到精通》)解释如下:
碰撞体是物理组件的一类,它要与刚体一起添加到游戏对象上才能触发碰撞。如果两个刚体相互撞在一起,除非两个对象有碰撞体时物理引擎才会计算碰撞,在物理模拟中,没有碰撞体的刚体会彼此相互穿过。
其实就是计算碰撞后的物理量。如下函数:

碰撞信息检测:
1.MonoBehaviour.OnCollisionEnter(
Collision collisionInfo )当进入碰撞器
2.MonoBehaviour.OnCollisionExit(
Collision collisionInfo ) 当退出碰撞器
3.MonoBehaviour.OnCollisionStay(
Collision collisionInfo ) 当逗留碰撞器
isTrigger:是个布尔选项。选择以后即成为触发器(但实际是个虚物体),只有在特定的触发条件下才能触发,如下几个函数:
触发信息检测:
1.MonoBehaviour.OnTriggerEnter( Collider other
)当进入触发器
2.MonoBehaviour.OnTriggerExit( Collider other
)当退出触发器
3.MonoBehaviour.OnTriggerStay( Collider other )当逗留触发器

碰撞事件产生条件:得出的结论似乎是如果碰撞双方只有一个有刚体,那么那个刚体一定要处于激活状态下才会有碰撞事件发生。两个对象要么都收到碰撞事件,要么都收到触发事件,不会出现一个收到触发事件,一个收到碰撞事件的情况

触发事件产生条件:

1、必须都要有碰撞器组件(Collider),其实上面的碰撞事件同样也需要这个前提条件。

2、必须有一个物体带刚体组件,并且处于运动状体中(包括主动运动去撞击别人和在运动过程中被别人撞击)。

3、两个碰撞器中至少有一个开启了IsTrigger。

时间: 2024-08-09 07:33:11

Unity 学习笔记2的相关文章

Unity学习笔记之五为Prefab添加材质

本次笔记中,我们将利用unity来创建并使用材质,把材质添加到我们的Prefab中去. 这一系列教程以及素材均参考自人人素材翻译组出品的翻译教程<Unity游戏引擎的基础入门视频教程>,下载链接附在第二篇学习笔记中. 继续上次笔记中所记录的东西,在Project视图中,ImportedAssets-Meshes-Materials下我们可以看到一个没有纹理的材质球,这个材质是跟随我们的3d Max模型来的默认材质.因为这里我们要添加自己的材质,所以我们直接把这个材质球删除. 删除后,我们看到本

unity学习笔记2

[转]自http://blog.csdn.net/tianyao9hen/article/details/53141141 对于新手学习unity碰撞讲的还是比较清楚的 OnTriggerEnter和OnCollisionEnter的触发条件是不同的,需要在设计的过程中加以关注. 触发的共同要求 碰撞的两个物体A,B,都要有碰撞体(collider),Box Collider,Sphere Collider,Capsule Collider等的任意一种 当A,B都添加刚体(Rigidbody)时

Unity学习笔记之四完善Prefab并添加First Person Controller

好久没学东西并用博客记录了,这个年过的很懒散,慢慢临近开学了,也要提前适应一下,写写东西,这样开学才能更好的进入状态呀-- 本次笔记中,我们将来雕琢一个更加完善的Prefab,并添加一个第一人称角色在场景中. 这一系列教程以及素材均参考自人人素材翻译组出品的翻译教程<Unity游戏引擎的基础入门视频教程>.下载地址附在第二篇笔记中. 上一篇教程我们创建了一个Prefab,在最后我利用四个Prefab通多顶点捕捉建立一个简易的隧道.这只是为了示意Prefab的便捷性,下面我们先把这个隧道删除到只

unity学习笔记一 受到伤害时的颜色变化

最近在跟着视频学做,很简单的demo 就是这个了,看过的人都知道,官方的.刚刚四级的我只能找点国内重制的看了 现在想做的效果就是受到伤害时会变红,让后慢慢平滑过渡到白色 在update方法中如下 void Update() { //鼠标左击模拟受到伤害 if( Input.GetMouseButtonDown(0)) { TakeDamage(30f); } //颜色变白 bodyRenderer.material.color =Color.Lerp(bodyRenderer.material.

unity学习笔记

monoDevelop乱码问题 这个问题坑了爹很久... unity自带的monodevelop的项目视图在我电脑(win7)上一直乱码,项目名称,项目结构树,以及文件名称全部显示成方框,今天调了下字体,把默认字体改成Consolas,无心插柳解决了这个问题... 见图片 关于Unity的一些概念和语法 最近一直在利用空闲时间看Unity的API,看的比较细但是实际操作的比较少,昨天有一整天的空闲时间,再加上有了一个还不错的想法,想要把它实现出来,因为用到的模型并不复杂,不需要用到建模软件,也不

Digital Tutors - Introduction to Scripting Shaders in Unity 学习笔记

1. Overview 2. Understanding Shader definition:code that define what the material can do in the environment classification: Surface Shader--容易编写,受光照等因素影响 Vertex and Fragment Shader(Pixels)--非常灵活,代码量大,写得好能提高渲染效率和降低开销 Fixed Function Shader--固定管线shader

Unity学习笔记:预制件Prefab的创建和使用

在制作游戏过程中,会需要通过代码创建多个一模一样的GameObject,比如射击游戏中的子弹,杂兵等各种. 在Unity中一般叫做Prefab预制件,起到模板的作用,可以快速的复制出相同的GameObject. 创建Prefab预制件 一般都会建立独立的目录,用于存放预制件. 第一种方法 在场景中添加一个GameObject,完成相关的设置.然后将其拖拽到Assets/Prefabs中 第二种方法 在Assets/Prefabs中,新建空的预制件 然后将场景中的GameObject拖到这个上面

Unity学习笔记(2)——关于Dropdown的学习

今天组长让我写一个界面,其中用到了下拉条,我的印象还停留在以前的NGUI有现成的组件,但是uGUI没有的那阶段,组长跟我说uGUI现在也有了,研究了一下,发现real方便哦,今天就来简单说一下用法吧. Dropdow 用法也就是点开会有一个下拉列表,选中的可以显示.那么第一个问题来了 就是怎么在下拉列表里填上我们所需要的选项,显示我们需要的个数首先呢,遇到一个没有用过的组件不要紧张,可以先看看面板上都有些什么属性,一般来说Inspect界面上的都是可以获取的,有些事可以改的有些的不能改的,如上图

Unity学习笔记 - UI System(一)

转载请注明出处: EnigmaJJ http://www.cnblogs.com/twjcnblog/p/5850648.html 术语 Canvas是Unity的原生组件,Unity的渲染系统使用Canvas来提供绘制在游戏世界中的分层几何结构. Canvas的职责是将他所包含的几何体组合成batches,生成合适的渲染命令并将这些命令发送给Unity的图形系统.所有这些都是由C++代码完成的,被称为rebatch或batch build.当Canvas被标记为需要rebatch时,该Canv