Unity - A计划(永久有效期) 扫二维码继续学习 二维码时效为半小时

(196评价)
价格: 4019.00元

### 屏幕坐标与视口坐标转换

 

#### Camera.ScreenToViewportPoint

 

public Vector3 ScreenToViewportPoint(Vector3 position);

 

Transforms position from screen space into viewport space.

 

Screenspace is defined in pixels. The bottom-left of the screen is (0,0); the right-top is (pixelWidth,pixelHeight). The z position is in world units from the camera.


 

#### Camera.ViewportToScreenPoint

 

public Vector3 ViewportToScreenPoint(Vector3 position);

 

Transforms position from viewport space into screen space.

 

Viewport space is normalized and relative to the camera. The bottom-left of the camera is (0,0); the top-right is (1,1). The z position is in world units from the camera.

[展开全文]
roger.ruo · 2021-11-21 · 0

//下列两条语句等价

transform.Translate(Time.deltaTime*transform.up,Space.World);

transform.Translate(Time.deltaTime*Vector3.up);

[展开全文]
roger.ruo · 2021-11-21 · 0

## 坐标系关联与相互转换

 

### Transform.Translate

 

`public void Translate(Vector3 translation, Space relativeTo = Space.Self);`

 

将transform,相对于space坐标系,移动translation的距离

 

* 移动谁:移动transform所在对象

* 相对于哪个坐标系移动:相对于space移动

* 移动多少:移动translation

* space枚举取值有哪些:space.world,space.self(默认值)

 

## Transform.TransformPoint

 

`public Vector3 TransformPoint(Vector3 position);`

 

将本transform空间中的点position,转换到世界坐标系。

 

## Transform.InverseTransformPoint

 

`public Vector3 InverseTransformPoint(Vector3 position);`

 

将世界坐标系中的点position,转换到本transform的局部坐标系

[展开全文]
roger.ruo · 2021-11-20 · 0

* 屏幕坐标系 Screen Space

** 标准定义:Screenspace is defined in pixels. The bottom-left of the screen is (0,0); the right-top is (pixelWidth,pixelHeight). The z position is in world units from the camera.

*** 以像素为单位

*** 原点左下角,右上角宽度screen.width和高度screen.height

** unity实现

*** 原点左下角,右上角宽度screen.width和高度screen.

**** 注意:Event.mousePosition原点在左上角,而不是坐下

height

*** 鼠标位置坐标属于屏幕坐标,input.mouseposition,是一个**三维向量**,z始终为0,可能是为了性能,不处理z。如果要精确,可以理解为z在视锥近平面cam.nearClipPlane。

*** 将世界坐标转换为屏幕坐标时,*Z是以世界单位衡量的到相机的距离*:摄像机对游戏世界的渲染范围是一个平截头体,渲染边界是一个矩形,用与near clippingplane或者far clippingplane平行的平面截取这个平截头体,可以获得无数个平行的矩形面,也就是我们看到的屏幕矩形。离摄像机越远,矩形越大,离摄像机越近,矩形越小。所以,同样大小的物体,随着离摄像机越来越远,相对于对应屏幕矩形就越来越小,所看起来就越来越小。在屏幕上,关键在于这个点在哪个截面上,也就是说,关键在于这个截面离摄像机有多远!*参数中的z坐标的作用就是:用来表示上述平面离摄像机的距离*。

**** Input.mouseposition移动到屏幕之外也会有值

*** 手指触摸屏幕也为屏幕坐标, 单手指input.gettouch(0).position,是一个**二维向量**

 

* 视口坐标系 ViewPort Space

** 标准定义:Viewport space is normalized and relative to the camera. The bottom-left of the viewport is (0,0); the top-right is (1,1). The z position is in world units from the camera.

*** 将屏幕坐标系单位化

*** 左下角 (0,0),右上角 (1,1)

** unity实现

*** 无法直接得到

*** 可以将屏幕坐标->视口坐标,或反之

*** 可以将世界坐标->视口坐标,或反之

*** 左下角 (0,0),右上角 (1,1)

*** 如前所述,当采集鼠标位置时,z不做处理,此时,z始终为0

[展开全文]
roger.ruo · 2021-11-20 · 0

三维向量基本运算

 

三维坐标系中的向量OP

 

 

三维向量的加减法 和 模 的计算, 和二维向量基本一致,只是多了一个Z轴需要参与运算

 

加减法

模的计算

[ x(平方) +y(平方) +z(平方) ](开根号)

 

 

 

 

 

 

 

 

 

 

[展开全文]
pilishen000 · 2021-11-20 · 0

三维坐标系

 

 

三维坐标系,分为左右手坐标系。

就像OpenGL 和 DX 一样。

 

 

 

OpenGL 先旋转180度 在镜像  得 DX

 

 

Unity 是左手坐标系

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[展开全文]
pilishen000 · 2021-11-20 · 0

二维坐标系旋转和平移

 

x = x` cos角度 + y`sin角度 + a

y = y` cos角度 - x`sin角度 + b

(a,b) 是坐标平移的向量

角度 是坐标先转的角度。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[展开全文]
pilishen000 · 2021-11-20 · 0

二维向量的叉乘

 

叉乘的其他叫法:

向量积,外积,叉积

 

点乘最后生成的是一个标量。

叉乘最后生成的是一个向量。

 

叉乘

a (向量) * b(向量)= c(向量)

(叉乘后得到的最终向量)

模长:

|c| = | a(向量) * b(向量)| =|a| |b| sin角度

方向:

c(向量)  的方向垂直于 a(向量) 与 b(向量)所在平面。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[展开全文]
pilishen000 · 2021-11-20 · 1

二维向量的点乘

 

1、a(向量) 点乘 b(向量) = x1x2 + y1y2 = 标量(数值)

=a(向量的模长) * b(向量的模长) cos(角度)

 

向量的点乘 可以换算成角度

角度 = ac cos( (a(向量) * b(向量) ) / a(向量模长) * b(向量模长) )

 

2、余弦定理

余弦定理推演:

余弦定理的推理是通过,三角函数平方关系+勾股定理 一起推演出来的。

三角函数平方关系:

 

勾股定理:

直角三角形 俩个直角边的平方和等于对边的平方

 

 

 

 

 

 

 

 

 

 

 

[展开全文]
pilishen000 · 2021-11-20 · 0

二维向量减法

 

二维向量的加法 = a(向量) + b(向量)

二维向量的减法 = a(向量) + -b(向量)

 

二维向量减法: 被减向量 与 减向量 平移到共起点, 减法得到的最终二维向量是 减向量的终点为起点,指向被减向量的终点。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[展开全文]
pilishen000 · 2021-11-20 · 0

二维向量加法

 

 

 

 

 

 

 

 

 

 

[展开全文]
pilishen000 · 2021-11-20 · 0

二维坐标系旋转

 

 

(根据上图的推到)

将坐标系顺时针旋转后,求得点坐标为:

x` = x cos角度 + y sin角度

y` = y cos角度 - x sin角度

 

将坐标逆时针旋转后,求得点坐标为:

x = x` cos负角度 + y` sin负角度

y = y` cos负角度 - x` sin 负角度

 

( 坐标变换 顺时针 和 逆时针 的区别在于角度的正负 )

[展开全文]
pilishen000 · 2021-11-20 · 0

二维坐标系平移

 

二维坐标的平移,是平移坐标系。

o`p`(向量) 是 op(向量) 经过 oo`(向量)平移 后得到的。

op`(向量) 是 o`p`(向量)在 XOY坐标系中的呈现。

op`(向量) 坐标等于

x` = x + a

y` = y + b 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[展开全文]
pilishen000 · 2021-11-19 · 0

二维单位向量

 

叉乘不符合交换律,俩个向量互换位子叉乘,得到的结果是不一样的。

 

单位向量:

模长等于一的向量。

 

 

求一个非零向量的单位向量:

 

(如何理解单位向量的计算公式)

单位向量是模长为1 ,有方向的,向量。

向量是有模长,有方向的。

用向量除以自身的模长,这样,向量的模就被化成1,方向不变。

 

 

零向量:

零向量长度为0

方向是任意方向

任何向量乘零向量都等于0

 

一个单位向量在平面直角坐标系上的坐标为(x,y) 根据勾股定理 和 单位向量模长为1 的特性 得  x(平方) + y(平方) = 1 。

斜率:  y / x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[展开全文]
pilishen000 · 2021-11-15 · 0

mode基类不要继承moni类 切记

否则后面查找的时候会报空

[展开全文]
救火队员1号报到 · 2021-11-11 · 0

登录UI前两次都可以,第三次开始无法消失的,可能是因为弹出栈时未清除所有的addlistener,导致下一次push的时候addlistener被绑定了多次,所以在loginpanel.cs中onexit函数中加上closeButton.onClick.RemoveAllListeners();

[展开全文]
Kisara · 2021-11-09 · 0

1、制作静态工具类

方法1:创建UI

GameObject go=Resources.Load<GameObje ct>(type.ToString());//取出游戏物体

 

2、创建枚举类型

[展开全文]
miliing · 2021-11-06 · 0

GameRoot:ContextView需要挂载在游戏物体上

void Awake(){
   context=new GameContext(this,true);
   context.Start();

}
GameContext:MVCSContext
    public GameContext(MonoBehaviour view,bool autoMapping):base(view,autoMapping)
    protected override void mapBindings()

绑定都是在GameContext中进行

[展开全文]
miliing · 2021-11-06 · 0
  • 设计模式是为了解决编程中某类问题的通用模板
  • 设计模式分为三大类:创建模式,行为模式,组合模式。
[展开全文]
贪欲 · 2021-11-05 · 0

1、ROOT继承contextView,继承自monobehivar,挂载在游戏物体上

2、新建类继承MVCS Context,事件名字和事件进行绑定

[展开全文]
miliing · 2021-11-05 · 0