Unity 2D游戏 摄像机透视视角的运用Perspective

背景

在开发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.net/NCZ9_/article/details/88014631

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值