
Unity3d
文章平均质量分 90
千羽千寻
生命要浪费在美好的故事上
展开
-
unity判断其它物体相对于自身方位以及角度
[csharp] view plain copy//求角度 及前后左右方位 public void checkTargetDirForMe(Transform target) { //xuqiTest: target.position = new Vector3(3, 0, 5); Vector3 dir = target.position - transfor...转载 2018-05-11 12:18:33 · 9334 阅读 · 1 评论 -
【Unity编程】Unity中关于四元数的API详解
Unity中关于四元数的API详解Quaternion类Quaternion(四元数)用于计算Unity旋转。它们计算紧凑高效,不受万向节锁的困扰,并且可以很方便快速地进行球面插值。 Unity内部使用四元数来表示所有的旋转。Quaternion是基于复数,并不容易直观地理解。 不过你几乎不需要访问或修改单个四元数参数(x,y,z,w); 大多数情况下,你只需要获取和使用现有的旋转(例如来自“Tr...转载 2018-03-23 17:34:04 · 355 阅读 · 0 评论 -
【Unity编程】四元数(Quaternion)与欧拉角
欧拉旋转、四元数、矩阵旋转之间的差异除了欧拉旋转以外,还有两种表示旋转的方式:矩阵旋转和四元数旋转。接下来我们比较它们的优缺点。欧拉角优点:三个角度组成,直观,容易理解。优点:可以进行从一个方向到另一个方向旋转大于180度的角度。弱点:死锁问题。 前面《【Unity编程】欧拉角与万向节死锁(图文版)》已经介绍过万向节死锁问题。四元数内部由四个数字(在Unity中称为x,y,z和w)组成,然而这些数...转载 2018-03-23 17:33:29 · 1388 阅读 · 0 评论 -
【Unity编程】欧拉角与万向节死锁(图文版)
万向节死锁(Gimbal Lock)问题上文中曾经说过,欧拉旋转的顺规和轴向定义,自然造就了“万向节死锁”问题。本文主要来探索它自然形成的原因。陀螺仪首先,我们来了解Gimbal 究竟是个什么玩意儿。下面来自维基百科中关于Gimbal的一段引述:平衡环架(英语:Gimbal)为一具有枢纽的装置,使得一物体能以单一轴旋转。由彼此垂直的枢纽轴所组成的一组三只平衡环架,则可使架在最内的环架的物体维持旋转...转载 2018-03-23 17:32:19 · 314 阅读 · 0 评论 -
【Unity编程】Unity中的欧拉旋转
欧拉角的定义在写这篇博客之前,我搜索了网上很多关于欧拉角的定义,发现大部分引用自维基百科的定义,我这里也引述一下:维基百科定义莱昂哈德·欧拉用欧拉角来描述刚体在三维欧几里得空间的取向。对于任何参考系,一个刚体的取向,是依照顺序,从这参考系,做三个欧拉角的旋转而设定的。所以,刚体的取向可以用三个基本旋转矩阵来决定。换句话说,任何关于刚体旋转的旋转矩阵是由三个基本旋转矩阵复合而成的。 对于在三维空间里...转载 2018-03-23 17:31:32 · 524 阅读 · 0 评论 -
【Unity Shader】如何修改LineRenderer与TrailRenderer 中的颜色
LineRender和TrailRender是两个好东西,很多Unity拖尾特效都会使用到它们。一些简单的介绍可以参见官方的API文档。 在这里探讨一下它们具体的渲染方式,而后给出一些Shader以便更好地控制它们。最终我们可以实现类似这样的一个效果: 接下来,我们先了解LineRenderer。稍后的TailRenderer情况类似。创建LineRenderLineRender是一个以顶点去控制...转载 2018-03-23 17:27:55 · 5965 阅读 · 0 评论 -
Unity3D - 向量(Vector)
向量(又称矢量)是游戏开发过程中非常重要的概念,它是用于描述具有大小和方向两个属性的物理量,例如物体运动的速度、加速度、摄像机观察的方向、刚体受到的力都是向量。在数学中,既有大小又有方向的量就是向量。在几何中,向量可以用一段有向线段来表示: 向量的运算加减向量的加法(减法)为各自分量分别相加(相减)。在物理上可以用来计算两个力的合力,或者几个速度分量的叠加。数乘向量与一个标量相乘为数乘。数乘可以对...转载 2018-03-19 18:33:23 · 1499 阅读 · 0 评论 -
点积与向量积(点乘与叉乘)
参考文档:《计算机图形学》参考文档: 百度百科参考文档: http://zuoye.baidu.com/question/f78a7e9b076367b03f1df832a8c131b3.html(Owed by: 春夜喜雨 http://blog.youkuaiyun.com/chunyexiyu 转载请标明来源) 设向量:V1(x1, y1, z1) V2(x2,y2,z2) 向量长度:(标量)...转载 2018-03-19 18:21:43 · 2873 阅读 · 0 评论 -
Unity 点乘和叉乘的原理和使用
Unity当中经常会用到向量的运算来计算目标的方位,朝向,角度等相关数据,下面咱们来通过实例学习下Unity当中最常用的点乘和叉乘的使用。点乘 (又称"点积","数量积”,"内积")(Dot Product, 用*)定义:a·b=|a|·|b|cos<a,b> 【注:粗体小写字母表示向量,<a,b>表示向量a,b的夹角,取值范围为[0,180]】几何意义:是一条边向另一条边...转载 2018-03-19 18:20:41 · 1995 阅读 · 0 评论 -
【Unity编程】Unity3D-使用对象池高效管理内存
Unity编程标准导引-3.4 Unity中的对象池 本节通过一个简单的射击子弹的示例来介绍Transform的用法。子弹射击本身很容易制作,只要制作一个子弹Prefab,再做一个发生器,使用发生器控制按频率产生子弹,即克隆子弹Prefab,然后为每个子弹写上运动逻辑就可以了。这本该是很简单的事情。不过问题来了,发射出去后的子弹如何处理?直接Destroy吗?这太浪费了,要知道Unity的Mon...转载 2018-03-23 11:24:44 · 364 阅读 · 0 评论 -
【Unity编程】 Transform
本文为博主原创文章,欢迎转载。请保留博主链接http://blog.youkuaiyun.com/andrewfan 每个游戏对象(GameObject),其存在于游戏世界,都有一个位置、朝向、大小等基本定位信息;其存于Hierarchy面板,也存在与其他GameObject的相对关系,如父子关系、兄弟关系。Unity中使用Transform来描述和操作这些属性。 Transform的字面理解就是“变换”的...转载 2018-03-23 11:08:52 · 1249 阅读 · 0 评论 -
【Unity编程】 MonoBehavior 组件父类重构
本文为博主原创文章,欢迎转载。请保留博主链接:http://blog.youkuaiyun.com/andrewfan3.2MonoBehavior 组件父类重构为了让我们的组件类用起来更方便,我们将上一节的代码进行重构。改写成如下:[csharp] view plain copyusing UnityEngine; using System.Collections; namespace Assets...转载 2018-03-23 11:05:51 · 426 阅读 · 0 评论 -
【Unity编程】 Component 组件脚本及其基本生命周期
本文为博主原创文章,欢迎转载。请保留博主链接:http://blog.youkuaiyun.com/andrewfan3.1组件 Component组件是Unity中最核心的一个概念,它是一切编程的基础。没有组件,也就没有了Unity编程。打开一个新Unity工程,我们在Project面板中右键可以直接创建出一个C#脚本。脚本的内容如下:using UnityEngine;using System.Coll...转载 2018-03-23 10:55:55 · 714 阅读 · 0 评论 -
Unity之向量***
向量表示的是方向和大小,与位置距离无关三维空间的表示如下在unity3d中采用的struct来描述的Vector3[csharp] view plain copy namespace UnityEngine { public struct Vector3 { public float x; public float y; ...转载 2018-03-21 11:59:47 · 400 阅读 · 0 评论 -
unity3d中Transform组件 Rotate()和rotation变量详解
Transform组件是每个游戏对象必须有的一个组建,因为你创建一个空物体,它也有该组建,因为unity3d是面向组建开发的一款游戏引擎。通过一张图片来看看它的属性 你可以在通过代码查看这些属性的区别 Debug.Log("position " + transform.position); //世界坐标的位置 Debug.Log("localPosition " ...转载 2018-03-26 09:48:47 · 93691 阅读 · 2 评论 -
【Unity编程】Unity动画系统(一)
Unity动画系统Unity动画系统,也称为“Mecanim”,提供了以下功能:简单的工作流程,设置动画的所有元素,包括对象,角色和属性。支持导入外部创建的动画片段和使用内置动画编辑器制作的动画片段。人型动画重新定位,动画角色的运动控制可以被所有的角色模型共享,即角色的外观(SkinedMesh)和运动(Animator)是分离的,它们互相组合之后形成最终的动画。用于编辑动画状态的的简化工作流程,...转载 2018-03-26 10:54:22 · 3700 阅读 · 0 评论 -
Unity3D之Mecanim动画系统学习笔记(十):Mecanim动画的资源加载相关
资源加载是必备的知识点,这里就说说Mecanim动画的资源如何打包及加载。注意,Unity4.x和Unity5.x的AssetBundle打包策略不一样,本笔记是基于Unity4.x的AssetBundle进行打包的。我们一般使用FBX类型的模型及动画文件,而动画文件的储存一般有两种情况,一是所有的动画和模型都一起存放到一个文件中,还有一种情况是模型单独一个文件而动画单独一个文件。这里我们就两种情...转载 2018-04-04 17:34:14 · 291 阅读 · 0 评论 -
Unity3D之Mecanim动画系统学习笔记(九):Blend Tree(混合树)
认识Blend Tree我们在Animator Controller中除了可以创建一个State外还可以创建一个Blend Tree,如下:那么我们看下新创建的Blend Tree和State有什么区别:唯一的区别就是Montion指向的类型变成了Blend Tree类型,那么一个Blend Tree其实也就是一个状态,和状态不同的地方就是一个状态只能设定一个动画,而一个Blend Tree则可以...转载 2018-04-04 17:33:24 · 1390 阅读 · 0 评论 -
Unity3D之Mecanim动画系统学习笔记(八):Animator Layers(动画分层)
解决什么问题?动画分层可以用来解决什么样的问题呢?试想一下如果你要开发一款第三人称的射击游戏,那么肯定是希望身体的动画分为上下两部分,上方根据瞄准的位置和是否射击进行动画播放,下方根据移动播放动画。最好的例子就是Unity4.x自带的示例AngryBots了。Avatar Mask下面我们就使用Avatar Mask来实现人物在奔跑中招手的效果。我们先添加一个人物到场景,同时为其添加一个Anima...转载 2018-04-04 17:32:20 · 1210 阅读 · 0 评论 -
Unity3D之Mecanim动画系统学习笔记(七):IK(反向动力学)动画
什么是IK?IK(Inverse Kinematics)即反向动力学,即可以使用场景中的各种物体来控制和影响角色身体部位的运动,一般来说骨骼动画都是传统的从父节点到子节点的带动方式(即正向动力学),而IK则倒过来,由骨骼子节点带动骨骼父节点,具体情况比如人物走路踩到了石头就需要由脚的子节点来带动全身骨骼做出踩到石头的响应。IK可以使人物和场景更加贴合,从而达到更加真实的游戏效果,如果大家玩过《波斯...转载 2018-04-04 17:31:41 · 793 阅读 · 0 评论 -
Unity3D之Mecanim动画系统学习笔记(六):使用脚本控制动画
控制人物动画播放这里我重新弄了一个简单的场景和新的Animator Controller来作为示例。下面先看看Animator Controller的配置:人物在站立状态只能进入走路,走路只能进入奔跑或返回站立,奔跑只能进入跳跃或返回走路,跳跃则只能返回奔跑。参数方面为两个参数:Float类型的moveSpeed;Trigger类型的Jump;连线直接的转换条件为:moveSpeed大于0.1进入...转载 2018-04-04 17:31:01 · 815 阅读 · 0 评论 -
Unity3D之Mecanim动画系统学习笔记(五):Animator Controller
简介Animator Controller在Unity中是作为一种单独的配置文件存在的文件类型,其后缀为controller,Animator Controller包含了以下几种功能:可以对多个动画进行整合;使用状态机来实现动画的播放和切换;可以实现动画融合和分层播放;可以通过脚本来对动画播放进行深度控制;下面我们通过一个图来直观的看看动画的组成结构:Animator组件用来控制人物动画的播放,其...转载 2018-04-04 17:30:19 · 358 阅读 · 0 评论 -
Unity3D之Mecanim动画系统学习笔记(四):Animation State
动画的设置我们先看看Animation Clip的一些设置:Loop time:动画是否循环播放。下面出现了3个大致一样的选项:Root Transform Rotation:表示为播放动画的对象的旋转方面的信息。Root Transform Position(Y):表示为播放动画的对象的位置 y 轴方面的信息。Root Transform Position(XZ):表示为播放动画的对象的位置 X...转载 2018-04-04 17:29:22 · 546 阅读 · 0 评论 -
Unity3D之Mecanim动画系统学习笔记(三):Animation View
动画组件之间的关系我们先看一张图:这里我们可以看到,我们在GameObject之上绑定的Animator组件是控制模型进行动画播放的。而其属性Controller则对应一个Animator Controller文件,该文件可以在Animator窗口中打开,其是被设计为状态机形式的系统,多个状态之间的切换关系可以在该界面进行设置。Animator Controller中的每个状态则对应一个Anima...转载 2018-04-04 17:28:32 · 369 阅读 · 0 评论 -
Unity3D之Mecanim动画系统学习笔记(二):模型导入
我们要在Unity3D中使用上模型和动画,需要经过下面几个阶段的制作,下面以一个人形的模型开发为准来介绍。模型制作模型建模(Modelling)我们的美术在建模时一般会制作一个称为T-Pose(及双臂张开)的模型。骨骼绑定(Rigging)在之前制作的模型上进行骨骼的绑定,我们需要注意的是骨骼数量不能少于15根,同时要遵循Unity3D的骨骼制作标准,如下:http://docs.unity3d....转载 2018-04-04 17:26:07 · 407 阅读 · 0 评论 -
Unity3D之Mecanim动画系统学习笔记(一):认识Mecanim动画系统
Mecanim简介Mecanim动画系统是Unity3D4.0开始引入的一套全新的动画系统,主要提供了下面4个方面的功能:针对人形角色提供一套特殊的工作流。动画重定向的能力,可以非常方便的把动画从一个角色模型应用到其他角色模型之上。提供可视化的Animation编辑器,可以方便的创建和预览动画片段。提供可视化的Animator编辑器,可以方便的管理多个动画切换的状态。工作流模型的准备Unity不能...转载 2018-04-04 17:25:03 · 447 阅读 · 0 评论 -
U3d Vector3.Lerp 插值的理解
有时,我们在做游戏时会发现有些跟随动作不够圆滑或者需要一个缓冲的效果,这时,一般会考虑到插值。所以对插值的理解是必需的。(比如摄像机跟随主角)插值是数学上的一个概念,在这里用公式表示就是:from + (to - from) * t;这也就是Lerp的返回值(用这个公式分别算出x,y,z)。static function Lerp (from : Vector3, to : Vector3, t ...转载 2018-03-22 11:48:35 · 1519 阅读 · 0 评论 -
【Unity编程】Unity动画系统(二)
距离上次翻译Unity 动画文档过去三个月,它已经从Unity5.6更新到了Unity2017,所以接下来的翻译在2017的文档上继续,动画文档的内容较多,为了能清楚显示当前阅读在哪里,我也作为分段落处理。 我将根据2017版的文档段落来进行分段:AnimationAnimation System OverviewAnimation Clips Animation from external so...转载 2018-03-26 10:55:03 · 681 阅读 · 0 评论 -
【Unity编程】Unity中的基本概念
本文为博主原创文章,欢迎转载。请保留博主链接:http://blog.youkuaiyun.com/andrewfan2.2Unity中的基本概念上述介绍提到了几个概念:游戏对象、场景、资源、相机,这个小节我们来深入了解,同时进行一些实践性操作。不过首先,我们需要大概了解一下Unity的工程文件夹。2.2.1工程文件夹在Unity工程目录下的文件夹,大致整理如下:文件夹名称介绍 AssetsAssets文件夹...转载 2018-03-23 10:11:53 · 638 阅读 · 0 评论 -
Unity3D_资源管理
WWW类Resource类AssetBundle资源动态加载内存结构 依赖关系 BundleManager技术陷阱转载 2018-03-08 14:58:53 · 189 阅读 · 0 评论 -
Unity3D_项目优化策略
遮挡剔除技术 烘焙概念及设置 LOD技术动态光探头在之前的博客中更新过动态光照探针的信息博文连接 光照探针 (light probe)反射探针转载 2018-03-08 14:58:24 · 192 阅读 · 0 评论 -
Unity3D_UGUI入门
什么是UIUI即User Interface(用户界面)的简称 好的UI设计不仅是让软件变得有个性有品味,还要让软件的操作变得舒适、简单、自由、充分体现软件的定位和特点。 什么是UGUIUGUI 是Unity 官方推出的最新UI系统。它从 Unity 4.6 开始,被集成到 Unity 的编辑器中。相较于旧的 UI 系统,它绝对属于一个巨大的飞跃!因为只要有过旧 UI 系统使用体验的开发者,大部...转载 2018-03-08 14:37:57 · 20687 阅读 · 2 评论 -
Unity3D_Mecanim动画系统
为基本物体创建插值动画在没有推出新动画系统的时候,以下的方式可以创建是创建Legacy动画系统的,现在系统已经默认是穿件Mecanim动画了。 首先在Hierarchy面板中创建一个基本的物体,并选中然后在菜单栏中Window中选择Animation 或者使用快捷键(Ctrl+6),就会打开一个新的面板Animation面板 点击Create后会打开一个保存动画的目录,命名后并保存,默认的路径...转载 2018-03-08 14:34:58 · 361 阅读 · 0 评论 -
Unity3D_Legacy动画系统
Legacy动画系统Unity3D的Mecanim动画系统是非常强大的,而且作为Unity推荐的动画系统,其未来会完全代替老的一套动画系统,即Legacy动画系统。目前的情况是Mecanim与Legacy两套动画系统同时共存,但是并不是说Legacy动画系统就没有任何价值了,作为Unity4.0以前使用的动画系统,我认为还是很有必要去了解和学习的,所以就有了这篇笔记。Unity自带的资源包里面的C...转载 2018-03-08 14:31:37 · 5113 阅读 · 0 评论 -
Unity3D_脚本与寻路系统的结合使用
什么是AI人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能的发展的领域有哪些?智能机器人,无人驾驶,Alpha go,小度机器人,智能家居。游戏中加入AI有什么好处提高游戏的可玩性 激发玩家的挑战欲望 增加游戏的友好体验Unity中的Navigation导航NavMesh(...转载 2018-03-08 14:27:55 · 984 阅读 · 0 评论 -
Unity3D_脚本和材质系统的结合使用
Material类创建一个材质球就是贴图和一些渲染的参数的组合,可以理解成一个预制体,里面保存了各种各样的渲染信息。 整个CG领域中这三个概念都是长不多的,在一般的实践中,大致上层级关系是:材质Material包含贴图Map,贴图包含纹理Texture。 纹理是最基本的数据输入单位,游戏领域基本上都用的是位图。此外还有程序化生成的纹理Procedural Texture。 贴图的英语Map其实包含...转载 2018-03-08 12:29:16 · 1199 阅读 · 0 评论 -
Unity3D_脚本和物理系统的结合使用
Unity内置了NVIDIA的Physx物理引擎,Physx是目前使用最为广泛的物理引擎,被很多游戏大作所采用,开发者可以通过物理引擎高效、逼真地模拟刚体碰撞、车辆驾驶、布料、重力等物理效果,使游戏画面更加真实而生动。Rigidbody(刚体)组件可使游戏对象在物理系统的控制下来运动,刚体可接受外力与扭矩力用来保证游戏对象像在真实世界中那样进行运动。任何游戏对象只有添加了刚体组件才能受到重力的影响...转载 2018-03-08 12:25:44 · 1326 阅读 · 0 评论 -
Unity3D_脚本和光照系统的结合使用
灯光灯光在游戏场景中具有不可或缺的作用,可以渲染场景的氛围,比如打丧尸的游戏,场景中应该是光线比较暗的,光线比较暗的才可以凸显恐怖的氛围。再比如做一些儿童类的游戏,场景中的光线比较光鲜才会让儿童的有愉快的心情。灯光的分类DirectionalLight 方向光 PointLight 点光源 SpotLight 聚光灯 AreaLight 区域光灯光的属性对于灯光来说其实就是一个空物体,只不过是空物...转载 2018-03-08 12:16:54 · 765 阅读 · 0 评论 -
Unity3D_Random类
using System.Collections;using System.Collections.Generic;using UnityEngine;public class RandomTest : MonoBehaviour { // Use this for initialization void Start () { //Random 是一个密封...转载 2018-03-08 12:02:13 · 386 阅读 · 0 评论 -
Unity3D_Input类
输入管理器可以设置项目的各种输入和操作。Edit->Project Settings->Input 获得键盘按着某个键的时候就会返回一个true public static bool GetKey(string name); public static bool GetKey(KeyCode key);using System.Collections;using System.Col...转载 2018-03-08 12:00:42 · 791 阅读 · 0 评论