U3D游戏开发基础
向量:
1. 向量的长度,即向量的模。计算公式为向量各个分量的平方和,然后开平方。
在D3DX库中,方法为:FLOAT D3DXVec3Length(CONST D3DXVECTOR3 * pV);
在U3D中,成员变量为:magnitude
2. 向量的规范化,使向量的模变为1。通过将每个分量除以向量的模可以使向量规范化。
在D3DX库中,方法为:D3DXVECTOR3 * D3DXVec3Normalize(
D3DXVECTOR3 * pOut , // 输出结果
CONST D3DXVECTOR3 * pV //需要规范化的向量
)
在U3D中,成员变量为:normalized
3. 数乘。数值与向量的各分量相乘,可对向量进行缩放。正数时向量方向不变,负数时向量方向相反。
4. 点积。等于向量对应的分量相乘,然后求和。根据余弦定理可以发现,等于两个向量的模的乘积再乘以两个向量夹角的余弦。
在D3DX库中,方法为:FLOAT D3DXVec3Dot(
CONST D3DXVECTOR3 * pV1, CONST D3DXVECTOR3 * pV2)
在U3D中,方法:public static float Dot(Vector3 lhs, Vector3 rhs);
5. 叉积。结果为另一个向量,向量U,V的叉积,运算得向量P与U和V都正交。
P=U×V=[(UYVZ-UZVY),(UZVX-UXVZ),(UXVY-UYVX)]
在D3DX库中,方法为:D3DXVECTOR3 * D3DXVec3Cross(
D3DXVECTOR3 * pOut,
CONST D3DXVECTOR3 * pV1,
CONST D3DXVECTOR3 * pV2
)
在U3D中,方法:public static Vector3 Cross(Vector3 lhs, Vector3 rhs);
四元数:
四元数包含一个标量和一个三维向量。四元数Q可以记做:Q=[w,(x,y,z)]
在U3D中四元数用Quaternion类来表示。
其常用的变量和函数如下截图表:
在游戏对象的Transform组件中,变量Transform.rotation为对象在世界坐标系下的旋转,Transform.localRotation为对象在父对象的局部坐标系下的旋转。两个变量类型为四元数,改变他们就可以设置对象的旋转了。
如以下的转换或运算:
var angle = 0.0;//旋转角度
var axis = Vector3.zero; //旋转轴。
transform.rotation.ToAngleAxis(angle, axis);
transform.rotation = Quaternion.identity;//局部坐标系的坐标轴与世界坐标系的坐标轴平行
Transform. TransformPoint()方法将坐标点从局部坐标系转换到世界坐标系;
Transform. InverseTransformPoint ()方法将坐标点从世界坐标系转换到局部坐标系;
Transform.TransformDirection()和Transform.InverseTransformDirection()则是对向量进行两个坐标系之间的转换。
U3D游戏开发基础的更多相关文章
- 【读书笔记《Android游戏编程之从零开始》】18.游戏开发基础(碰撞检测)
1.矩形碰撞 所谓矩形碰撞,就是利用两个矩形之间的位置关系来进行判断,如果矩形的像素在另外一个矩形之中,或者之上都可以认为这两个矩形发生了碰撞. 如果单纯的去考虑哪些情况会判定两个矩形发生碰撞,倒不如 ...
- 【读书笔记《Android游戏编程之从零开始》】16.游戏开发基础(动画)
1. Animation动画 在Android 中,系统提供了动画类 Animation ,其中又分为四种动画效果: ● AlphaAnimation:透明度渐变动画 ● ScaleAnimati ...
- 【读书笔记《Android游戏编程之从零开始》】15.游戏开发基础(剪切区域)
剪切区域也称为可视区域,是由画布进行设置的:它指的是在画布上设置一块区域,当画布一旦设置了可视区域,那么除此区域外,绘制的任何内容都将看不到:可视区域可以是圆形.矩形等等. 画布提供了三种设置可视区域 ...
- 【读书笔记《Android游戏编程之从零开始》】14.游戏开发基础(Bitmap 位图的渲染与操作)
Bitmap 是图形类,Android 系统支持的图片格式有 png.jpg.bmp 等. 对位图操作在游戏中是很重要的知识点,比如游戏中需要两张除了大小之外其他完全相同的图,那么如果会对位图进行缩放 ...
- 【读书笔记《Android游戏编程之从零开始》】13.游戏开发基础(Paint 画笔)
1.Paint画笔 Panit(画笔)是绘图额辅助类,其类中包含文字和位图额样式.颜色等属性信息.Paint 的常用方法如下: setAntiAlias(boolean aa) 作用:设置画笔是否无锯 ...
- 【读书笔记《Android游戏编程之从零开始》】12.游戏开发基础(Canvas 画布)
1.Canvas 画布 画布类 Canvas 封装了图形和图片绘制等内容,此类常用的函数说明如下: drawColor(int color) 作用:绘制颜色覆盖画布,常用于刷屏 参数:颜色值,也可用十 ...
- RPG游戏开发基础教程
RPG游戏开发基础教程 第一步 下载RPG Maker 开发工具包 1.RPG Maker 是什么? RPG Maker 是由Enterbrain公司推出的RPG制作工具. 中文译名为RPG制作大师. ...
- 【COCOS2DX-LUA 脚本开发之一】在Cocos2dX游戏中使用Lua脚本进行游戏开发(基础篇)并介绍脚本在游戏中详细用途!
[COCOS2DX-LUA 脚本开发之一]在Cocos2dX游戏中使用Lua脚本进行游戏开发(基础篇)并介绍脚本在游戏中详细用途! 分类: [Cocos2dx Lua 脚本开发 ] 2012-04-1 ...
- 【读书笔记《Android游戏编程之从零开始》】19.游戏开发基础(游戏音乐与音效)
在一款游戏中,除了华丽的界面 UI 直接吸引玩家外,另外重要的就是游戏的背景音乐与音效:合适的背景音乐以及精彩的音效搭配会令整个游戏上升一个档次. 在 Android 中.常用于播放游戏背景音乐的类是 ...
随机推荐
- ***C - I love sneakers!(动态规划,分组背包)
C - I love sneakers! Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64 ...
- awk中{print $1}什么意思
给你举个例子,echo "aa bb cc" | awk -F '{print $1}' 结果就是aa,意思是把字符串按空格分割,取第一个,自己做个测试就明白了!awk是用来提取列 ...
- linux 防火墙开端口(转)
vi /etc/sysconfig/iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT(允许80端口通过防火 ...
- c语言结构体指针必须初始化
先说结论 结构体指针需要初始化 结构体指针的成员指针同样需要初始化 结构体变量定义的时候就已经分配了内存空间,而上面两个确没有 struct test{ int i; struct buf *p;} ...
- ASP.NET应用程序的生命周期
对基于.Net平台的Web应用程序开发者来说,编写适合的应用程序生命周期的代码是非常重要的.所以必须要了解应用程序生命周期才能在适当的生命周期阶段编写合适代码,达到预期的效果.ASP.NET应用程序的 ...
- 【2】docker 与UFW
ufw是一个主机端的iptables类防火墙配置工具. 1.查看ufw的状态:ufw status 2.如果使用UFW,需要对其进行修改才能让DOCKER工作.docker使用一个网桥来管理容器中的网 ...
- Redis常用API-使用文档
一.Redis Client介绍 1.1.简介 Jedis Client是Redis官网推荐的一个面向java客户端,库文件实现了对各类API进行封装调用. Jedis源码工程地址:https://g ...
- hdu_3068_最长回文(Manacher)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3068 题意:给你一个字符串,让你求最长的回文子串. 题解:数据量比较大,暴力O(n2)会超时,直接上马 ...
- 素数槽csuoj
超时代码: #include <iostream> using namespace std;//写一个函数判断是否是素数bool isPrime(int num){int i=2;//co ...
- OPENWRT make defconfig错误之一
make defconfig rm: cannot remove `tmp/.host.mk': Permission denied 退到trunk上级目录 su root sudo chown -R ...