Unity3D之空间转换学习笔记(二):基础数学
这期笔记我们专注Unity提供的各种数学相关的类来学习。
时间Time
API文档地址:http://docs.unity3d.com/ScriptReference/Time.html
时间加/减速
Demo04是一个自由落体的弹性小球从天空落下的一个场景,用于测试下面的示例所用。
这个效果在游戏中也比较常用,比如在战斗游戏中,打败BOSS或我方死亡时都会呈现一种慢镜头的效果。
我们的脚本按下空格将会减速10倍的时间,脚本绑定在摄像机上,代码如下:
using UnityEngine;
using System.Collections; public class Demo04Script : MonoBehaviour
{
void Start()
{
} void Update()
{
if (Input.GetKeyDown(KeyCode.A))
{
Time.timeScale = 0.1f;
Time.fixedDeltaTime = 0.002f;
}
if (Input.GetKeyUp(KeyCode.A))
{
Time.timeScale = 1.0f;
Time.fixedDeltaTime = 0.02f;
}
}
}
需要注意的是除了修改timeScale之外,还要修改物理运算的fixedDeltaTime,否则在物理模拟中会由于间隔过小导致出现跳帧的现象,大家可以注释掉fixedDeltaTime的代码运行查看。
随机数Random
API文档地址:http://docs.unity3d.com/ScriptReference/Random.html
随机数比较简单,就不过多讲解了。
数学运算Mathf
API文档地址:http://docs.unity3d.com/ScriptReference/Mathf.html
平滑过渡变色
Demo05是一个随机变换颜色的小盒子,用于测试下面的示例所用。
主要使用到了柏林噪音,具体的代码如下:
using UnityEngine;
using System.Collections; public class Demo05Script : MonoBehaviour
{
public GameObject cube; private Material _material;
private Vector3 _colorSpace; void Start()
{
_material = cube.GetComponent<Renderer>().material; _colorSpace = new Vector3(
Random.Range(0f, 10f),
Random.Range(0f, 10f),
Random.Range(0f, 10f)
);
} void Update()
{
float r = Mathf.PerlinNoise(Time.time, _colorSpace.x);
float g = Mathf.PerlinNoise(Time.time, _colorSpace.y);
float b = Mathf.PerlinNoise(Time.time, _colorSpace.z); _material.color = new Color(r, g, b);
}
}
由于柏林噪音是一种平滑的随机形式,所以我们的颜色改变也是平滑过渡的,如果使用普通的随机数则达不到平滑过渡的效果。
工程文件下载
http://pan.baidu.com/s/1sjQJ5j3
Unity3D之空间转换学习笔记(二):基础数学的更多相关文章
- Unity3D之空间转换学习笔记(一):场景物体变换
该系列笔记基于Unity3D 5.x的版本学习,部分API使用和4.x不一致. 目前在Unity3D中,除了新的UGUI部分控件外,所有的物体(GameObject)都必带有Transform组件,而 ...
- Unity3D之空间转换学习笔记(三):3D数学
3D数学基础 向量 向量可以看做具有方向和大小的一条线段. 比如:我们如果用点A减去点B,则可以得到一个向量,该向量的方向为点B面向点A的方向,而大小为两点的距离.这个方法在游戏开发中经常用到,比如我 ...
- Java IO学习笔记二
Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...
- Linux内核学习笔记二——进程
Linux内核学习笔记二——进程 一 进程与线程 进程就是处于执行期的程序,包含了独立地址空间,多个执行线程等资源. 线程是进程中活动的对象,每个线程都拥有独立的程序计数器.进程栈和一组进程寄存器 ...
- [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计
源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...
- Redis学习笔记二 (BitMap算法分析与BitCount语法)
Redis学习笔记二 一.BitMap是什么 就是通过一个bit位来表示某个元素对应的值或者状态,其中的key就是对应元素本身.我们知道8个bit可以组成一个Byte,所以bitmap本身会极大的节省 ...
- ES6学习笔记<二>arrow functions 箭头函数、template string、destructuring
接着上一篇的说. arrow functions 箭头函数 => 更便捷的函数声明 document.getElementById("click_1").onclick = ...
- kvm虚拟化学习笔记(二)之linux kvm虚拟机安装
KVM虚拟化学习笔记系列文章列表----------------------------------------kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51 ...
- Java IO学习笔记二:DirectByteBuffer与HeapByteBuffer
作者:Grey 原文地址:Java IO学习笔记二:DirectByteBuffer与HeapByteBuffer ByteBuffer.allocate()与ByteBuffer.allocateD ...
随机推荐
- 省常中模拟 Test4
prime 数论 题意:分别求 1*n.2*n.3*n.... n*n 关于模 p 的逆元.p 是质数,n < p. 初步解法:暴力枚举.因为 a 关于模 p 的逆元 b 满足 ab mod p ...
- PNG文件结构分析 ---Png解析
PNG文件结构分析 ---Png解析 为了实现更高级的应用,我们必须充分挖掘PNG的潜力. PNG的文件结构 根据PNG文件的定义来说,其文件头位置总是由位固定的字节来描述的: 十进制数 13 ...
- BOM浏览器对象模型和API速查
什么是BOMBOM是Browser Object Model的缩写,简称浏览器对象模型BOM提供了独立于内容而与浏览器窗口进行交互的对象由于BOM主要用于管理窗口与窗口之间的通讯,因此其核心对象是wi ...
- poj 1742 Coins
// v给出N种硬币和个数,问可以取到1->M中的多少个值.// 背包 完全背包 或多 重背包(二进制优化)都可以做// #include <iostream> #include & ...
- asp.net夜话之十一:web.config详解
转:http://blog.csdn.net/zhoufoxcn/article/details/3265141 在开发中经常会遇到这样的情况,在部署程序时为了保密起见并不将源代码随项目一同发布,而我 ...
- ecshop 二次开发及模板标签
ecs_account_log // 用户账目日志表 ecs_activity // 活动表(代码,名称,开始,结束,描述) ecs_ad // 广告表(位置,类型,名称,链接,图片,开始,结 ...
- Listview异步加载之优化篇
异步加载图片基本思想: 1. 先从内存缓存中获取图片显示(内存缓冲) 2. 获取不到的话从SD卡里获取(SD卡缓冲) 3. 都获取不到的话从网络下载图片并保存到SD卡同时 ...
- Partitioning by Palindromes
题意: 给定一个字符串,求能分成最小几个回文串 分析:简单dp dp[i]前i个字符能分成的最小数量 dp[i]=min(dp[i],dp[j-1]+1) (j-i 是回文串) #include &l ...
- Eclipse编辑java文件报Unhandled event loop exception错误的解决办法
原因:电脑中安装了杀毒软件,卸掉或者关掉就可以了.我的是直接退出,错误就不产生了.
- 通过简单的Linux内核启动程序代码窥探操作系统的启动原理
作者:吴乐 山东师范大学 <Linux内核分析> 孟宁 MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.程序设计与分析 ...