2015-10-23 15:51:55 a117653909 阅读数 4321
  • Unity3D入门到精通-(3)Unity资源管理精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的资源管理技术进行了全面介绍,特别对AssetBundle资源如何进行更新,以及加载(依赖资源加载)进行了系统的介绍。 适合对象:Unity初学开发者,Unity中级开发者,网络程序开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    4711 人正在学习 去看看 张刚

我觉得要真正地理解四元数是把Unity3D里四元数函数都上手测试一下其功能。
四元数在Unity3D中的作用就是拿来表示旋转。

AngleAxis
创建一个旋转,绕着某个轴旋转,返回结果是一个四元数。
跟ToAngleAxis实现的是相反的功能。

Angle
返回两个旋转值(四元数)之间的角度,返回值是float类型的角度值。
(不知道这个值算出来后有什么用)

Dot
点乘,我也不太理解其意义。
参见

eulerAngles
返回表示旋转的欧拉角度(Vector3 即3个值)
(如果调用的是某个物体,则表示该物体当前位置是从原始位置怎么旋转过来的,
其实就是Inspector里的Rotation的3个值)

Euler
感觉跟eulerAngles是相反的操作(经测试,确实是)
输入的是欧拉角的3个值,返回的是一个旋转(四元数)

FromToRotation
参数是两个Direction(Vector3),返回一个Quaternion
我觉得主要是用在要把A物体的朝向转成跟B物体的朝向一样时所需要的旋转值(Quaternion)
然后再调用Transform.Rotate就可以把A旋转成跟B一样了。

identity
可以理解为单位四元数

Inverse
就是一个旋转的反旋转,其实就是把刚才的那个旋转转回去。

Lerp
插值,可以理解为可以把一个物体的朝向转向跟另一个物体一样,跟时间配合可以慢慢地旋转。

LookRotation
可以让A物体一直朝向B物体。
参照下面这篇文章的做法,导入ThirdPersonController
http://blog.csdn.net/lijing_hi/article/details/7272089

Quaternion
构造函数,参数是4个float值

RotateTowards
跟Slerp类似

SetFromToRotation
跟FromToRotation功能一样,只是调用方式不一样。

SetLookRotation
跟LookRotation功能一样,只是调用方式不一样。

Slerp
旋转一个角度从from到to。

this[int index]
像数组那样调用x, y, z, w,感觉还不如直接用.x来调用。
可能是为了循环方便。

ToAngleAxis
把一个rotation 转成 angle-axis 形式。跟AngleAxis实现的是相反的功能。
用引用的方式传入 angle和 axis 。
这跟transform.localEulerAngles很类似。
输入:transform.localEulerAngles=(0,0,0);
输出:angle=0, axis=(1,0,0);
输入:transform.localEulerAngles=(0,90,0);
输出:angle=90,axis=(0,1,0);
输入:transform.localEulerAngles=(270,0,0);
输出:angle=90,axis=(-1,0,0)

ToString
格式化成一个字符串

参考:http://blog.csdn.net/yustarg/article/details/8623687

2017-06-10 22:44:17 liuyuehui110 阅读数 8688
  • Unity3D入门到精通-(3)Unity资源管理精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的资源管理技术进行了全面介绍,特别对AssetBundle资源如何进行更新,以及加载(依赖资源加载)进行了系统的介绍。 适合对象:Unity初学开发者,Unity中级开发者,网络程序开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    4711 人正在学习 去看看 张刚

本章主要是 Unity3D 的基础快速入门篇,通过本章的学习,能让初学者们快速的掌握和
应用 Unity3D 软件。
本章导读
本章无论对于 Unity3D 初学者、或是以前从事建模工作的设计师、又或者是从事过 3D
编程的人群,在转向 Unity3D 的学习的时候,学习本章内容都极有必要的。通过本章节内容
的学习,你可以迅速的掌握 Unity3D 的软件结构,各个板块具体的功能和作用以及场景制作
流程等等。本章节可以说是全书的根基,只要你能把本章节的内容掌握熟悉,那在今后的日
子里面开发任何的游戏可以说是事半功倍。这就像运动员们在小的时候打好了坚实的基础,
再向今后的专业突破的时候,就感觉游刃有余,几乎不费吹灰之力就拿下任何一个项目。
对于有一定 Unity3D 基础的人群而言,笔者也强力建议在有充足时间的情况下,耐心的
阅读下本章节的内容。因为笔者时常在网上发现一些 Unity3D 早期的开发者,往往对一些 U
nity3D 很基础性的功能莫不着头脑。这不能怨这些开发者的水品不够,而是有许多 Unity3D
的功能在长期未被使用的情况下,被他们遗忘了,突然有一天需要使用的时候,就抓了狂,
发了疯。
另外笔者要在这里提醒一下建模设计师,可能你们在原先的行业里面已经将 3DS MA
X、Maya 等建模软件摸索得相当熟练了,但游戏场景和影视场景还是存在很大的差异。首
先最大的差异就在于灯效的实时性,游戏讲究的是动态灯光,追求与游戏者视觉互动;而影
视灯光则是一种静态的逐帧灯光,所有效果都被渲染成一张张静态的连续图片,它们主要倾
向与影迷们的观赏互动;前者比较主动,而后者相对来说比较被动。前者在使用灯效处理的
时候受硬件的局限性大,面对的客户群体需要有所区分;后者在观赏灯效处理的时候,几乎
不受任何计算机硬件的影响,面对的客户群体也比较广泛。

1.1 界面入门


如图 1-1 所示为 Unity3D 最经典 2 by 3 结构界面,上面呈现了 Unity3D 最为常用的几
个面板,下面为各个面板的详细说明。
  Scene【场景面板】:该面板为 Unity3D 的编辑面板;你可以将你所有的模型、灯光、
以及其他材质对象拖放到该场景中。构建游戏中所能呈现景象。
  Game【游戏面板】:与场景面板不同,该面板是用来渲染场景面板中景象的。该面
板不能用作编辑,但却可以呈现完整的动画效果。
  Hierarchy【层次清单栏】:该面板栏主要功能是显示放在场景面板中所有的物体对
象。
  Project【项目文件栏】:该面板栏主要功能是显示该项目文件中的所有资源列表。
除了模型、材质、字体等,还包括该项目的各个场景文件。
  Inspector【监视面板】:该面板栏会呈现出任何对象的所固有的属性,包括三维坐
标、旋转量、缩放大小、脚本的变量和对象等等。
  【场景调整工具】:可改变你在编辑过程中的场景视角、物体世界坐标和本地坐标
的更换、物体法线中心的位子,以及物体在场景中的坐标位置,缩放大小等等。
  【播放、暂停、逐帧按钮】:用于运行游戏,暂停游戏和逐帧调试程序。
  【层级显示按钮】:勾选或取消该下拉框中对应层的名字,就能决定该层中所有物
体是否在场景面板中被显示。
  【版面布局按钮】:调整该下拉框中的选项,即可改变编辑面板的布局。
  【菜单栏】:和其他软件一样,包含了软件几乎所有要用到的工具下拉菜单。
除了 Unity3D 初始化的这些面板而外,你还可以通过“Add Tab”按钮和菜单栏中的“W
indow”下拉菜单中,增添其他面板和删减现有面板。特别是“Window”下拉菜单中的“Li
ghtmapping”和“Occllusion Culling”面板对游戏的后期优化尤为管用。除此而外还有用
于制作动画文件的 Animation【动画面板】,用于观测性能指数的 profiler【分析器面板】,
用于购买产品和发布产品的 Asset Store【资源商店】,用于控制项目版本的 Asset Server
【资源服务器】,用于观测和调试错误的 Console【控制台面板】。
在【菜单栏】中包含有八个菜单选项:分别是 File【文件】、Edit【编辑】、Assets【资
源】、GameObject【游戏对象】、Component【组件】、Terrain【地形】、Window【窗口】、He
lp【帮助】。这些是 Unity3D 中最标准的菜单选项卡,其各自又有自己的子菜单,表 1-1 中
列出了各个菜单栏以及它们所包含的下拉菜单及其译名,仅供读者参考。

主菜单  包含的子菜单

File【文件】

New Scene【新建场景】
Open Scene【打开场景】
Save Scene 【保存场景】
Save Scene as…【场景另存为…】
New Project… 【新建工程文件】
Open Project… 【打开工程文件】
Save Project 【保存工程文件】
Build Settings… 【创建设置】(这里可以设置你的游戏将要以
何种方式发布,发布的场景文件又包含那些)
Build & Run 【创建并运行】(这里以“Build Settings”里设
置好的方式,发布并运行游戏)
Exit 【退出】

Edit【编辑】

Undo 【撤销上一步操作】
Redo 【恢复被撤销的操作】
Cut 【剪切】
Copy 【拷贝】
Paste 【粘贴】
Duplicate 【复制】
Delete 【删除】
Frame Selected 【在编辑场景中最大化显示被选中的物体】
Select All 【全选编辑面板中的所有物体】
Preferences… 【首选参数设置】
Play 【播放】(如果游戏已经开始播放,点此按钮代表停止播
放)
Pause 【暂停】
Step 【逐帧播放游戏】
Load selection 【载入所选】(与“Save selection”【存储所选】
联合使用,你可以把它理解为一个临时的快捷键,帮你快速的
找到特定的以被存储的物体对象。)
Save selection 【存储所选】(与“Load selection”【载入所选】
联合使用,你可以把它理解为一个临时的快捷键,帮你快速的
找到特定的以被存储的物体对象。)
Project Settings 【工程文件设置】(包含了该工程项目的“Inp
ut”【热键】、“Tags”【标签管理】、“Audio”【音频设置】、“Ti
me”【时间设置】、“Player”【播放器设置】、“Physics”【默认仿
真物理设置】、“Quality”【播放质量参数设置】、“NetWork”【网
络工作参数设置】、“Editor”【编辑器设置】)“Script Execution
Order”【脚本编译顺序设置】
Render settings 【渲染设置】(默认渲染参数设置,包括环境光,
周围的雾化程度,环境颜色等等一系列参数的设定)
Network emulation 【网络仿真】(由于你制作的游戏将会在不
同的网络环境中工作,所以需要这个参数来模拟不同的网络工
作环境)
Graphics emulation 【图形卡仿真】(由于你制作的游戏将会在
不同的图形卡环境中工作,所以将需要这个参数来模拟不同硬
件条件下的游戏显示质量)
Snap settings 【捕捉设置】(和 3Ds Max 的“栅格和捕捉设置”
类似。)

Assets 【资源】

Create 【创建】(包含有“Folder”【文件夹】、“JavaScript”【Ja
vaScript 编程脚本】、“C# Script”【C#编程脚本】、“Boo Script”
【Boo 编程脚本】、“Shader”【着色语言】、“Prefab”【预置物体】、
“Material”【材质】、“Animation”【动画】、“Cubemap”【立方
体贴图】、“Lens Flare”【镜头光晕】、“Custom Font”【自定义
字体】、“Render Texture”【渲染纹理】、“Physic Material”【物
理材质】、“GUI Skin”【用户图形界面皮肤】)
Show in Explor 【显示项目资源所在的文件夹】
Open【打开选中的资源】
Delete【删除选定资源】
Import New Asset... 【导入新的资源】
Import Package...【导入资源包】
Export Package... 【导出资源包】
Select Dependencies 【选择相关联的文件】
Export compressed audio file... 【导出压缩的音频文件】
Refresh 【刷新】
Reimport 【重新导入选中的资源】
Reimport All 【重新导入所有的资源文件】
Sync MonoDevelop Project 【与 Mono 项目文件同步】

GameObject【游戏项目】

Create Empty【创建空的游戏对象】
Create Other 【创建其他组件】(包含了“Particle System”【粒
子系统】、“Camera”【摄像机】、“GUI Text”【图形用户界面文
本】、“GUI Texture”【图形用户界面图片】、“3D Text”【3D 文
字】、“Directional Light”【平行光】、“Point Light”【点光源】、
“Spotlight”【聚光灯】、“Cube”【立方体】、“Sphere”【球】、“C
apsule”【胶囊】、“Cylinder”【圆筒】、“Plane”【平面】、“cloth”
【布料】、“Audio Reverb Zone”【声音回响区域】、“Ragdoll..”
【布娃娃系统】、“Tree”【植被树系统】、“Wind Zone”【风的区
域】)
Center On Children 【归位到子物体中心点】
Make Parent 【创建父集】(必须选择两个以上的物体才能使用
该命令,最先被选中的物体为父级对象,其余的对象都为该对
象的子集)
Clear Parent 【取消父集】(取消被选中物体与它上一个父级之
间的父子级关系)
Apply Changes To Prefab 【改变影响预制物体】(如果你在场
景中编辑的物体是从资源面板拖拽出的预制物体,默认的情况
下,你在场景面板中对物体做出的改变不会影响原先的预制物
体,除非你点击该按钮)
Move To View 【移动物体到“Scene”视窗的中心点】
Align With View 【移动物体到“Scene”视窗的中心点,并且
与显示口正对齐,物体中心位于显示口的中心点】
Align View to Selected 【移动“Scene”视窗与物体对齐,并
且显示口的中心点位于物体的中心】

Component【组件】

Mesh 【网格】(“Mesh Filter”【网格填充】、“Text Mesh”【文
字网格】、“Mesh Renderer”【网格渲染】、“Combine Children”
【合并子物体】)
Particles 【粒子系统】(能打造出非常棒的流体效果,是制作烟
雾、激光、火焰等效果的首选。“Ellipsoid Particle Emitter”【
椭球粒子发射器 】,“Mesh Particle Emitter”【面片粒子发射器】,
“Particle Animator” 【粒子动画】, “World Particle Collider” 【世
界粒子碰撞机】,“Particle Renderer”【粒子渲染器】,“Trail Re
nderer”【蔓延渲染】)
Physics 【物理系统】(可使物体带有对应的物理属性)
Audio 【音频】(可创建声音源和声音的听者)
Rendering 【渲染】
Miscellaneous 【杂项】
Scripts 【脚本】(Unity 内置的一些功能很强大的脚本)
Image Effects【图形渲染效果】(仅限专业版)
Character【角色控制器】
Camera-Control 【摄像机控制】

Terrain【地形】 

 Create Terrain 【创建地形】
Import Heightmap - Raw... 【导入高度图】
Export Heightmap - Raw... 【导出高度图】
Set Resolution... 【设置分辨率】
Create Lightmap... 【创建光影图】
Mass Place Trees... 【批量种植树】
Flatten Heightmap... 【展平高度图】
Refresh Tree and Detail Prototypes 【刷新树及细节模型】

Window【窗口】

Next Window 【下个窗口】
Previous Window 【前一个窗口】
Layouts 【布局】
Scene 【场景窗口】
Game 【游戏窗口】
Inspector 【监视窗口】(这里主要指各个对象的属性)
Hierarchy 【层次窗口】
Project 【项目文件窗口】
Animation 【动画窗口】(用于创建时间动画的面板)
Profiler 【性能探测窗口】
Asset Store 【资源商店】
Asset Server 【源服务器】
Lightmapping 【灯影视图窗口】
Occlusion Culling 【遮挡剔除窗口】
Console 【控制台】

Help【帮助】

About Unity... 【关于 Unity】
Enter serial number... 【输入序列号】
Unity Manual 【Unity 手册】
Reference Manual 【参考手册】
Scripting Manual 【脚本手册】
What’s New 【最新功能】
Unity Forum 【Unity 论坛】
Unity Answers 【Unity 在线答疑】
Unity Feedback 【Unity 使用信息反馈】
Welcome Screen 【欢迎窗口】
Check for Updates 【查看升级】
Release Notes 【发行说明】
Report a bug【软件缺陷反馈】

2019-07-08 16:58:50 weixin_44611644 阅读数 601
  • Unity3D入门到精通-(3)Unity资源管理精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的资源管理技术进行了全面介绍,特别对AssetBundle资源如何进行更新,以及加载(依赖资源加载)进行了系统的介绍。 适合对象:Unity初学开发者,Unity中级开发者,网络程序开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    4711 人正在学习 去看看 张刚

Unity3D是一款游戏开发软件,如何去获取它呢?
1 进入Unity3D官网
在这里插入图片描述
这个过程会比较慢,耐心等待

2 点击Get start 进行获取
在这里插入图片描述
3 选择个人版(免费)
在这里插入图片描述
这时会获取Unity Hub
Unity Hub桌面端应用程序旨在简化你打开Unity的方式。初识Unity Hub,你可能觉得它似乎没什么特别之处,但实际上它有着不少新功能。
首先它是一个与Unity编辑器分开的独立应用程序。这是简化工作流程的重要步骤。
整合Unity编辑器的管理

Unity Hub有一个专用区域用于查找和下载Unity编辑器的版本。你可以轻松找到并下载最新版本的Unity,包括beta测试版本。
在这里插入图片描述
到这里就结束了 ,可以进行第一个Unity项目的编写了!

2015-02-10 20:24:51 book_longssl 阅读数 826
  • Unity3D入门到精通-(3)Unity资源管理精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的资源管理技术进行了全面介绍,特别对AssetBundle资源如何进行更新,以及加载(依赖资源加载)进行了系统的介绍。 适合对象:Unity初学开发者,Unity中级开发者,网络程序开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    4711 人正在学习 去看看 张刚

 

           最近仔细比较了目前版本中的两套动画系统:Legacy和Mecanim。Mecanim系统功能较之Legacy要强大很多,但是使用AnimatorController着实不方便(尽管使用AnimatorOverrideController可以避免重复编辑状态机),是因为游戏逻辑层面往往要用一个状态机或者类似的机制来控制角色的状态,而角色层面的状态逻辑和动画层面是无法一一对应的,两套复杂的状态机要配合起来。。。想想就觉得蛋疼啊!难怪很多朋友现在还在使用Legacy动画系统。Legacy动画系统其实功能也很全面了,包括Layer、过渡混合、上下身混合之类的功能完全能够胜任,而且控制起来就直接的多了。唯独Root Motion这个我很需要特性没有支持,本文就探讨一下如何在Legacy动画系统之上附加Root Motion功能,其实很简单 。


何谓Root Motion

在不使用Root Motion的情况下,类似走、跑这样的位移控制是这样的:

1.    请美术在导出动画时把位移去掉;
2.    在程序代码里控制角色移动的速度,在播放动画的同时,计算其位移。
这种做法其实挺不科学的,程序控制的角色,只能当做一个质点来处理,并且大多数时候都是匀速运动,而动画中的角色的移动往往很难跟这个匹配。所以需要比较良好的计算和比较好的美术技巧才能避免角色“滑步”的现象。在“跑”这种快速移动这,滑步还比较好处理,如果是慢速移动。。。。再厉害的美术也爱莫能助了。这种情况下,最好还是使用Root Motion:
1.    美术在导出动画的时候是附带位移的;
2.    程序把动画的每一帧的位移是从动画中读取出来,再应用到角色上的,这样就能达到动画和位移的完美匹配了。
在Legacy中添加Root Motion功能
了解了Root Motion的概念之后,在Unity3D引擎中我们很简单就可以实现此功能了。Unity3D有一个统一的对象层次结构设计,这点非常赞,我们可以很简单找到角色的根骨骼,然后把其中的Transform变换读取出来,请见以下示例代码:


//-- 计算当前帧的Root Motion
    Vector3 rootPos = m_rootBone.localPosition;
    m_rootMotion = rootPos - m_lastRootPos;
    m_lastRootPos = rootPos;
    rootPos.x = 0;
    rootPos.z = 0;
    m_rootMotion.y = 0;
    m_rootBone.localPosition = rootPos;
请注意,我们在后续的代码中要把m_rootMotion附加的角色对象上,所以m_rootBone的postion被reset了。
在读取了此帧的Root Motion,在可以把它应用到当前对象之上了:
//-- Apply Root Motion
  Vector3 nextPos = this.transform.position + m_rootMotion;
        this.transform.position = nextPos;
另外,一个细节需要处理一下,在动画循环的那一帧,需要特殊处理一下。好的,看一下完整的源代码吧:
using UnityEngine;
using System.Collections;
public class ApplyRootMotion : MonoBehaviour
{
  public Transform m_flagObject;   // 用来测试位置的一个对象
  //-- Root Motion 控制变量
  Transform m_rootBone;
    Vector3 m_lastRootPos;
    Vector3 m_rootMotion;
    int m_lastAnimTime;
  void Start ()   {
    //-- 从SkinnedMeshRenderer中读取Root Bone
    SkinnedMeshRenderer skinMesh = this.gameObject.GetComponentInChildren<SkinnedMeshRenderer>();
  m_rootBone = skinMesh.rootBone;
  //-- 变量初始化
  m_rootMotion = Vector3.zero;
  m_lastRootPos = m_rootBone.localPosition;
  m_lastAnimTime = 0;
  }  
  void Update ()   {
    //-- Apply Root Motion
    Vector3 nextPos = this.transform.position + m_rootMotion;
  this.transform.position = nextPos;

  //-- 测试代码:更新测试物体的位置
  Vector3 flagPos = m_flagObject.position;
  flagPos.x = nextPos.x;
  flagPos.z = nextPos.z;
  m_flagObject.position = flagPos;
  //-- 测试代码:更新摄像机
  Camera.main.transform.LookAt(this.transform);
  }
  void LateUpdate()    {
    AnimationState animState = this.animation["walking"];
    if ((int)animState.normalizedTime > m_lastAnimTime)    {
    //-- 动画循环处理
    m_lastRootPos = m_rootBone.localPosition;
    m_rootMotion = Vector3.zero;
  }  else  {
    //-- 计算当前帧的Root Motion
    Vector3 rootPos = m_rootBone.localPosition;
    m_rootMotion = rootPos - m_lastRootPos;
    m_lastRootPos = rootPos;
    rootPos.x = 0;
    rootPos.z = 0;
    m_rootMotion.y = 0;
    m_rootBone.localPosition = rootPos;
  }
  m_lastAnimTime = (int)animState.normalizedTime;
    }
}

最后是截图。。。好吧,静态图片看不出效果,可以下载完整Demo(请使用Unity 4.6版本打开),角色移动非常平滑.



QQ截图20150210202215.png

2017-02-20 10:55:56 d276031034 阅读数 4930
  • Unity3D入门到精通-(3)Unity资源管理精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的资源管理技术进行了全面介绍,特别对AssetBundle资源如何进行更新,以及加载(依赖资源加载)进行了系统的介绍。 适合对象:Unity初学开发者,Unity中级开发者,网络程序开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    4711 人正在学习 去看看 张刚


Unity官网下载链接 https://store.unity.com/cn/?_ga=1.107281794.1832005354.1486108272

第一个为个人免费版,作为学习完全够用。建议通过注册账号进行免费使用,后续从资源商店下载资源时会用到账号。

Unity3D安装  附属一些功能:Visual Studio为脚本编辑器必需安装;其他为导出插件,比如导出安卓应用,就选择安装安卓插件,这些并不重要,可以不装

在导出时,会提示安装插件。安装成功如下图所示,比较简单。


没有更多推荐了,返回首页