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 中.常用于播放游戏背景音乐的类是 ...
随机推荐
- robotium和appium的一些区别
Appium是基于UIAutomator框架实现的.Appium测试进程与目标应用进程是分开的,所以Appium不能直接访问目标应用的各种element属性进行copy&paste,而只能模拟 ...
- C - 小Y上学记——认识新同学
C - 小Y上学记——认识新同学 Time Limit: 4000/2000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) ...
- 第1章 初识java----Java简介
1.Java最初的名字是OAK,是咖啡的意思,在1995年被重命名为Java. ●Java编程语言,即语法. ●Java文件格式,即各种文件夹.文件的后缀. ●Java虚拟机(JVM),即处理*.cl ...
- 移动端日历控件 mobiscroll 的简单使用、参数设置
mobiscroll 在性能方面比较好,可选用多种效果,滑动效果也比较顺畅. 提供样式文件和js文件,直接点击下载,该版本是 mobiscroll 2.13的 官方地址 :https://docs ...
- iOS使用Swift语言检查并提示更新
项目要上线了,产品要求跟安卓一样,一进去有一个提示框提示更新.虽然苹果在 Settings/iTunes Store & App Store 选项中有自动更新这一选项,而且添加版本号等等有被拒 ...
- Subordinates
Subordinates time limit per test 1 second memory limit per test 256 megabytes input standard input o ...
- SharedPreferences的工具类
import android.content.Context; import android.content.SharedPreferences; import android.content.Sha ...
- IntelliJ IDEA 部署远程服务
今天产品遇到个本地无法重现,服务器上却出现的 Bug. 想起来 IDEA 有远程调试的功能就拿来用用. 教程如下: 1. 创建 tomcat service 2. 填入服务器的 IP 和端口 3. 确 ...
- 【01-14】java ThreadLocal工具类
自定义ThreadLocal package concurrent; import java.util.HashMap; import java.util.Map; /** * @author alo ...
- JavaScript高级程序设计:第七章
函数表达式 1.函数表达式的特征: 定义函数的方式有两种:一种是函数声明,另一种就是函数表达式.函数声明的语法是这样的: function functionName(arg0,arg1,arg2){ ...