admin管理员组

文章数量:1530326

背景

在开发2D游戏时,会有仿照3D效果的需求,比如近大远小,近快远慢.如果视线有垂直方向的变化,那还有视线错位的需求.这种较为复杂的2D仿3D效果,单纯通过正交摄像机加代码控制就很难达到效果了.这时候该采用透视摄像机Perspective.

透视摄像机遇到的问题

在正交摄像机中,不用考利摄像机的位置,只要对象在摄像机前方即可正常显示,物体大小不会跟随摄像机远近而变化.但在正交摄像机中,物体的大小就和摄像机的距离息息相关了,就像是真实的人眼看世界一样,近大远小.那该如何把我这个距离呢?

透视摄像机的属性

距离计算


相机视角 = 60度,那么角α =60/2 = 30度,所以tanα ≈ 0.5773502691896258。

图片像素为1920*900,那么X = 900/2 = 450。

因为tanα = X/Y,所以Y = X/tanα = 450/0.5773502691896258 ≈ 779.4228634059947。

因为按照上面的设置,100像素相当于1米,所以,Y的值换算为米,约等于7.79米。

因为相机的位置设为(0,0,0),所以2D物体即精灵图片的位置应设为(0,0,7.79)。

按照这个设定可以确定第一层2D画面的位置,但如果有多层画面,比如在近景马路的后面 还有远近 楼房,那楼房的位置该如何设置?

远景位置计算

远景与近景按比例缩小了,将远景放置在远离摄像机的位置,那从游戏界面中看到的就是通过透视看到的远景,画面会比实际大小小,放得越远就越小.那放多远合适?
你需要确定远景对比近景的距离,比如远景是比近景远10米的,那远景就放在近景之后10米的位置,大小也要调整,调整到屏幕分辨率w:h,

计算缩放:

X为图片原大小,那么X = 1。

B的长度为物体指定位置,假设值为10。

那么,A比X等于B比Y。

A = B/YX = 10/7.791 ≈ 1.28

————————————————
版权声明:本文为CSDN博主「JPF29」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn/NCZ9_/article/details/88014631

本文标签: 视角透视摄像机游戏Unity