向量:

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游戏开发基础的更多相关文章

  1. 【读书笔记《Android游戏编程之从零开始》】18.游戏开发基础(碰撞检测)

    1.矩形碰撞 所谓矩形碰撞,就是利用两个矩形之间的位置关系来进行判断,如果矩形的像素在另外一个矩形之中,或者之上都可以认为这两个矩形发生了碰撞. 如果单纯的去考虑哪些情况会判定两个矩形发生碰撞,倒不如 ...

  2. 【读书笔记《Android游戏编程之从零开始》】16.游戏开发基础(动画)

    1. Animation动画   在Android 中,系统提供了动画类 Animation ,其中又分为四种动画效果: ● AlphaAnimation:透明度渐变动画 ● ScaleAnimati ...

  3. 【读书笔记《Android游戏编程之从零开始》】15.游戏开发基础(剪切区域)

    剪切区域也称为可视区域,是由画布进行设置的:它指的是在画布上设置一块区域,当画布一旦设置了可视区域,那么除此区域外,绘制的任何内容都将看不到:可视区域可以是圆形.矩形等等. 画布提供了三种设置可视区域 ...

  4. 【读书笔记《Android游戏编程之从零开始》】14.游戏开发基础(Bitmap 位图的渲染与操作)

    Bitmap 是图形类,Android 系统支持的图片格式有 png.jpg.bmp 等. 对位图操作在游戏中是很重要的知识点,比如游戏中需要两张除了大小之外其他完全相同的图,那么如果会对位图进行缩放 ...

  5. 【读书笔记《Android游戏编程之从零开始》】13.游戏开发基础(Paint 画笔)

    1.Paint画笔 Panit(画笔)是绘图额辅助类,其类中包含文字和位图额样式.颜色等属性信息.Paint 的常用方法如下: setAntiAlias(boolean aa) 作用:设置画笔是否无锯 ...

  6. 【读书笔记《Android游戏编程之从零开始》】12.游戏开发基础(Canvas 画布)

    1.Canvas 画布 画布类 Canvas 封装了图形和图片绘制等内容,此类常用的函数说明如下: drawColor(int color) 作用:绘制颜色覆盖画布,常用于刷屏 参数:颜色值,也可用十 ...

  7. RPG游戏开发基础教程

    RPG游戏开发基础教程 第一步 下载RPG Maker 开发工具包 1.RPG Maker 是什么? RPG Maker 是由Enterbrain公司推出的RPG制作工具. 中文译名为RPG制作大师. ...

  8. 【COCOS2DX-LUA 脚本开发之一】在Cocos2dX游戏中使用Lua脚本进行游戏开发(基础篇)并介绍脚本在游戏中详细用途!

    [COCOS2DX-LUA 脚本开发之一]在Cocos2dX游戏中使用Lua脚本进行游戏开发(基础篇)并介绍脚本在游戏中详细用途! 分类: [Cocos2dx Lua 脚本开发 ] 2012-04-1 ...

  9. 【读书笔记《Android游戏编程之从零开始》】19.游戏开发基础(游戏音乐与音效)

    在一款游戏中,除了华丽的界面 UI 直接吸引玩家外,另外重要的就是游戏的背景音乐与音效:合适的背景音乐以及精彩的音效搭配会令整个游戏上升一个档次. 在 Android 中.常用于播放游戏背景音乐的类是 ...

随机推荐

  1. mysql的存储引擎如何选择

    myisam:如果表对事务要求不高,用时以查询和添加为主,我们考虑myisam存储,如bbs中的发帖表.回复表 innodb:对事务要求高,保存的数据都是重要的数据,我们建议使用innodb,比如订单 ...

  2. iOS中的项目新特性页面的处理

    一般项目中都会出现新特性页面,比如第一次使用应用的时候,或者在应用设置里查看新特性的时候会出现. 这里,选择新建一个专门处理项目新特性的控制器,来完成功能. 首先是 NewFeaturesViewCo ...

  3. Android makefile 组织结构

    下面是main.mk文件包含关系,本文档主要说明的就是这些文件里到底做了什么.(这个文件被根目录下的makefile文件包含) 一.     main.mk BUILD_SYSTEM=build/co ...

  4. HDU1007--Quoit Design(平面最近点对)

    Problem Description Have you ever played quoit in a playground? Quoit is a game in which flat rings ...

  5. while循环与i--

    int i = 5;         while(i-- > 0){             System.out.println("i="+i);         } 打印 ...

  6. python unitest基本

    基本 import unittest class OneTest(unittest.TestCase): def setUp(self): self.verificationErrors = [] s ...

  7. Linux入门(一)常见虚拟机及Linux系统安装、xshell连接虚拟机

    1环境 linux常用两种虚拟机 1.1  oracle VM VirtualBox 官方网站:https://www.virtualbox.org/ 1.2  vmware  下载链接:https: ...

  8. hdu_5792_World is Exploding(树状数组+逆序对)

    题目链接:hdu_5792_World is Exploding 题意: 给你一个数列,让你找有多少个(a,b,c,d)满足a≠b≠c≠d,1≤a<b≤n,1≤c<d≤n,Aa<Ab ...

  9. ice调通过iceReplica用所有server instance的方法---客户端控制服务端的负载均衡

    I 使用此方法,可以增量的通知Ice服务配置的改变,刷新每个服务进程的数据 可以手动控制客户端调用的负载均衡,客户端程序决定将请求发往那个进程 上代码: import logging import I ...

  10. requirejs 一个拆分js项目的类库

    http://www.requirejs.cn/ http://requirejs.org/docs/start.html