Quaternion.Euler(x,y,z)含义是按照每个旋转轴以x,y,z旋转度旋转,例子:Quaternion.Euler(45,45,45) Quaternion与Vector3的右乘操作(*)返回一个将原有向量做旋转操作后的新向量 列如:Quaternion.Euler(0,90,0)*Vector3(0.0,0.0,-10) 相当于把向量Vector3(0.0,0.0,-10)绕y轴旋转90度,得到的结果为Vector3(-10,0.0.0.0)…
书籍推荐: 3D数学基础:图形与游戏开发——游戏软件开发专家系列(美)邓恩 Unity Shader入门精要 冯乐乐(92年) 数据结构(Python语言描述) 数据结构.算法与应用(C++语言描述) 算法导论 第3版 黑客与画家 程序员生存之道 流体力学:八叉数空间划分   四元数的几个概念: 四元数的模长:Mathf.Sqrt(x^2 + y^2 + z^2 + w^2) 标准四元数:模长为1的四元数叫标准四元数:在Unity中所有用来表示旋转的四元数都是标准四元数 单位四元数:[0,0,0…
注意:Oa其实在OK的延长线上,上图只是为了好看才把Oa和OK分开了 算法需求如图所示: 已知空间向量OA和空间向量OB 我想算出OA向OB按某角度或者某时间移动 变成空间向量Oa的算法 先说废话:我一开始尝试了:空间平面.矩阵.四元素等等方式都能算出来,但是很繁琐. 然后发现,其实向量之间的算法完全能满足需求: 1.先求出向量AB 2.然后按某时间,某角度或者某百分比 乘以AB向量得到向量:AK 3.OA+AK=OK 4.将OK的向量归一化,乘以OA的模(长度)得到Oa 注意:Oa其实在OK的…
using System.Collections; using System.Collections.Generic; using UnityEngine; public class WindVaneCom : MonoBehaviour { public static WindVaneCom instance { get; private set; } public bool isOn = false; public Camera cam; public GameObject T; publi…
分类:Unity.C#.VS2015 创建日期:2016-04-20 一.简介 在虚拟的游戏世界中,与3D有关的数学知识决定了游戏引擎如何计算和模拟出开发者以及玩家看到的每一帧画面.学习或者回想一下基础的3D有关的数学知识,可以帮助开发者对游戏引擎产生更深刻的了解. 二.向量 在数学中向量的定义是:既有大小又有方向的量叫作向量.在空间中,向量可以用一段有方向的线段来表示. 向量在游戏开发过程中的应用十分广泛,可用于描述具有大小和方向两个属性的物理量,例如物体运动的速度.加速度.摄像机观察方向.刚…
Unity官方提供了4种载入场景(scene)的方法.各自是: 1. Application.LoadLevel():同步载入 2. Application.LoadLevelAsync():异步载入 3. Application.LoadLevelAddictive():同步附加式载入 4. Application.LoadLevelAddictiveAsync():异步附加式载入 以下对这四种方法进行简要的介绍和分析: 1.同步载入:如果当前场景为A,我们要切换到场景B,unity会在切换场…
向量的叉乘: 数学运算:a(ax,ay,az) x b(bx,by,bz) = c(aybz-azby,azbx-axby,axby-aybx) 几何意义:得到一个新的向量,同时垂直于a向量和b向量,垂直于ab向量所组成的平面,c向量是ab平面的法向量 左手螺旋定则:四指指向a,握向b,大拇指指向c 作用 1.求顺指针,逆时针关系(y>0,y<0) 2.求平面的法向量   四元数(威廉·哈密顿): 万向节死锁(Gimbal Lock): https://v.qq.com/x/cover/e05…
首先要在项目中安装Unity,通过NuGet搜索Unity. 1.定义接口 IDependencyResolver using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace IOCContainer { public interface IDependencyResolver : IDisposable…
[MenuItem("Tools\AddColor")] :  在Unity菜单中添加一种快捷,执行public static方式 [AddComponentMenu("Tools/AddComponent")]:    在Unity菜单中添加一种快捷,快速为某一个游戏物体添加一个组件 [ContextMenu("添加文本")]: 点击组件右键,添加一种快速执行组件的某方法方式 [ContextMenuItem("添加属性",…
1.引言 前面几个章节介绍了Unity的基本使用,主要分为程序和配置文件两种方法的使用,可以参考一下链接, [IoC容器Unity]第一回:Unity预览 [IoC容器Unity]第二回:Lifetime Managers生命周期 [IoC容器Unity]第三回:依赖注入 本节作为结束篇,将介绍一下在项目中如何应用Unity. 2.范例 Unity应用广泛,在很多开源项目中都可以找到Unity的身影.就拿微软的开源项目新闻发布系统 Kigg 举例,Kigg的依赖注入就是使用到了Unity,大家可…
隐式等待 说明 隐式等待是通过设置一定时长的等待,让页面上的某些元素能过加载出来,如果超过了设置的时间还没有加载出来则抛出(NoSuchelementException异常),默认单位为"秒" #在创建驱动后添加,隐式等待会作用于全局,相当于是一个全局变量 driver.implicitly_wait(3) #等待指定时间 显示等待 说明 显示等待某个条件成立时才继续执行,否则到达最大等待时间后,程序将抛出(timeoutException)异常 from selenium.webdr…
例如 List<CmyObj> m_list=new List<CmyObj>(); class CmyObj{ string m_name; int m_value; } class CmyObj{ int m_value; string m_name; } 以上两种CmyObj的定义方式导致m_list在inspector上显示效果不同. 第一种显示效果列好.…
Looper 一个线程可以产生一个Looper对象,由它来管理此线程里的MessageQueue(消息队列). 我们知道一个线程是一段可执行的代码,当可执行代码执行完成后,线程生命周期便会终止,线程就会退出,那么做为App的主线程,如果代码段执行完了会怎样?,那么就会出现App启动后执行一段代码后就自动退出了,这是很不合理的.所以为了防止代码段被执行完,只能在代码中插入一个死循环,那么代码就不会被执行完,然后自动退出,怎么在在代码中插入一个死循环呢? 那么Looper出现了,在主线程中调用Loo…
提要 四元素是游戏开发中经常使用的用于处理旋转的数学工具,以下就用C++来实现一个四元素类.參考Unity中四元素的接口. 假设没有看之前的 彻底搞懂四元数. 建议先看一下. 代码清单 Quaternion.h #pragma once #include "Vector3.h" #include "Mathf.h" class Quaternion { public: Quaternion(float x, float y, float z, float w); Q…
开发路线: 1,游戏背景(连续播放) 2,添加主角 3,设置游戏主角的动画 4,添加两种子弹并设置子弹的运动 5,添加三种子弹 设置子弹的自动生成和运动 6,添加两种奖励物品 设置奖励物品的自动生成和运动 7,设置主角的控制 7.1检测手指触摸 7.2问题:防止主角飞出屏幕 8,设置Tag 添加子弹和敌人的碰撞 9,设计敌人 0 1 2 震动动画和爆炸效果 10,添加脚本GameManager做游戏的控制 11,统计分数 1,新建项目,导入资源,平台匹配: 2,背景循环(一般是2/3个背景精灵切…
1:添加unity自带的第一人称角色控制器,命名为hreo 2:添加第三人称角色控制器.这里是添加源文件Sources下面的.如箭头指示:而不是“3rd Person Controller”.并命名为NPC.并设置预设,和加上BOX碰撞器.产生多个NPC.结构图: 3:修改hreo自带的Mouse Look脚本 using UnityEngine; using System.Collections; /// MouseLook rotates the transform based on the…
[Unity]13.3 Realtime GI示例 摘要: 分类:Unity.C#.VS2015 创建日期:2016-04-19 一.简介 使用简单示例而不是使用实际示例的好处是能让你快速理解光照贴图和光影效果相关的概念和基本设置办法,这样可避免实际复杂场景中其他因素的干扰.一旦你熟悉了这些基本用法,在实际场景中依然是这样用. 本例子最终实现的效果如下: 二阅读全文 posted @ 2016-05-19 06:21 rainmj 阅读(319) | 评论 (0) 编辑   [Unity]13.…
实例步骤 1.创建Unity项目和文件目录,保存场景 场景搭建 2.导入美术做好的资源包(第68) a: 导入地形资源包terrain.unitypackage,把里面的Map/Prefabs/Terrain预制体拖入场景; b: 导入地形上的物体资源包Props.unitypackage,把里面的Map/Prefabs/Props 1预制体拖入场景; c: 导入水特效资源包water.unitypackage,把里面的Standard Assets/Water (Basic)/Daylight…
DOTween flash里面的一个概念叫补间动画,DOTween就是干这个事情的. 补间动画:在1秒钟之内从A点移动到B点,在这个之间会把动画补间补好. 当我们安装好DOTween后,它就会提供很多补间的功能方便我们使用.当我们安装了这个插件以后,我们就可以快速使用代码来生成补间动画. 例子:赛车选择界面,旋转赛车后有一个慢慢回弹的动画效果. 安装DOTween1: 去网站http://dotween.demigiant.com/getstarted.php下载2: 将DOTween解压后复制…
Unity对象池管理 一.Demo展示 二.逻辑 在游戏中会出现大量重复的物体需要频繁的创建和销毁:比如子弹,敌人,成就列表的格子等: 频繁的创建删除物体会造成很大的开销,像这种大量创建重复且非持续性保持作用的对象我们会使用对象池将其管理起来,用空间换效率: 对象池的要对外提供创建销毁对象的接口,已经添加对象池的接口: 对内要提供创建对象,根据路径查找预制的接口: 整体逻辑如下: 二.加载/添加对象池 添加资源路径,分为Resources文件夹下和SteamingAssets文件下资源: Res…
本文是Unity官方教程,性能优化系列的第四篇<Optimizing graphics rendering in Unity games>的翻译. 相关文章: Unity性能优化(1)-官方教程The Profiler window翻译 Unity性能优化(2)-官方教程Diagnosing performance problems using the Profiler window翻译 Unity性能优化(3)-官方教程Optimizing garbage collection in Uni…
[Unity Shaders]学习笔记——SurfaceShader(一)认识结构 转载请注明出处:http://www.cnblogs.com/-867259206/p/5595747.html 写作本系列文章时使用的是Unity5.3. 写代码之前: 当然啦,如果Unity都没安装的话肯定不会来学Unity Shaders吧? 阅读本系列文章之前你需要有一些编程的概念. 在VS里面,Unity Shaders是没有语法高亮显示和智能提示的,VS党可以参考一下这篇文章使代码高亮显示,也可以下载…
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/40955607 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 邮箱: happylifemxy@163.com 本篇文章中.我们学习了Unity Shader的基本写法框架,以及学习了Shader中Properties(属性)的详细写法,光照.材质与颜色的详细写法.写了6个Shader作为…
转载:https://my.oschina.net/u/138823/blog/181131 摘要: 这篇文章主要介绍Surface Shaders基础及Examples详尽解析 What?? Shader,看起来好高级的样子,是的,这是Unity中高级进阶的必备.因此,兄弟我就在此记下我学习官网的一些心得. 此为一.主要介绍些Surface Shaders的知识.具体的大家也可去官网(如下)学习. http://docs.unity3d.com/Documentation/Components…
Project(工程.项目):工程是把游戏开发当前所需要的资源归类管理用的. Console控制台:日志.报错.调试,右上角,消息过滤 Assets:资源,存储游戏中一切用到的资源 Library:临时库文件 ProjectSettings:项目设置.项目控制 Temp:临时文件夹 UnityPackageManager:资源包 工程迁移: Assets.ProjectSettings.UnityPackageManager,这三个文件夹必须拷贝走 如果报错,先删掉Library和Temp,再重…
图形变换是一个将例如点.向量或者颜色等实体进行某种转换的操作.对于计算机图形学的先驱者,掌握图形变换是极为重要的.有了他们,你就可以对象.光源以及摄像机进行定位,变形以及动画添加.你也可以确认所有的计算都是在同一个坐标系统下面进行的,而物体以不同的方式投影到平面上.在图形变换只有少数操作运行,但它们足以证明图形变换在实时图形学中的重要性,甚至可以说是任何一种计算机图形学. 线性变换是一种保留了向量加法和标量乘法的变换.具体如下: f(x) + f(y) = f(x+y), kf(x) = f(k…
1.宽高比问题 我们如今相当熟悉这样一个事实,在OpenGL里,我们要渲染的一切物体都要映射到X轴和Y轴上[-1,1]的范围内,对于Z轴也一样.这个范围内的坐标被称为归一化设备坐标,其独立于屏幕实际尺寸或形状. 不幸的是,由于它们独立于实际的屏幕尺寸,假设直接使用它们,我们就会遇到问题.比如在横屏模式下被压扁的桌子. 如果实际的设备分辨率以像素为单位是1280*720,这在新的Android设备上是一个经常使用的分辨率.为了使讨论更加easy.让我们也临时假定OpenGL占用整个显示屏. 假设设…
该文章持续更新! 协程的返回值必需是 IEnumerator 协程的参数不能加关键字 ref 或 out 在函数 Update 和 FixedUpdate 中不能使用 yield 语句,但可以启动协程 yield return 语句不能位于 try-catch 语句块中,但可以位于 try-finally 中的 finally 语句块中 yield return 语句不能放在匿名方法中 yield return 语句不能放在 unsafe 语句块中 UnityScript(即:Unity Jav…
StartCoroutine在unity3d的帮助中叫做协程,意思就是启动一个辅助的线程. 在C#中直接有Thread这个线程,但是在unity中有些元素是不能操作的.这个时候可以使用协程来完成. 使用线程的好处就是不会出现界面卡死的情况,如果有一次非常大量的运算,没用线程就会出现假死的情况. 下面通过一个简单的例子来说明使用协程的好处: void OnGUI() { GUI.Label(new Rect(0, 0, 200, 50), "测试1:" + result); if (GU…
使用条件   天下没有免费的午餐,在我使用unity的那一刻,我就感觉到不自在,因为开源所以不知道底层实现,如果只是简单的做点简单游戏,那就无所谓的了,但真正用到实际地方的时候,就会发现一个挨着一个坑,然后你就跟着unity做各种妥协.如果开发中需要使用网络等等涉及到多线程的地方,就会用到c#的多线程,注意不是unity的协程,你要做的妥协参考下面(网友整理,我没去搜索)的: 1. 变量(都能指向相同的内存地址)都是共享的 2. 不是UnityEngine的API能在分线程运行 3. Unity…