场景中旋转摄像头,被观察的物体始终在界面的一侧

本文介绍了一种在游戏中让角色在屏幕任意位置旋转时,始终保持在视线一侧的方法。通过调整相机、角色和目标点的位置关系,形成三角形并绕角色旋转,实现了自由视角旋转而不影响角色在屏幕中的位置效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

现在很多游戏都会在主页中显示一个场景,然后玩家的人物会在场景当中。这个时候往往会需要一些旋转功能,来方便玩家查看人物的各个角度。

一般的做法就是人物自身转动,摄像机不动,这样用户无法用其他视角观察到整个场景。另一种是人物不动,相机围绕人物,或者某个点转动,这种做法的缺点在于要么人物在屏幕中央(看向人物),要么会在屏幕左右乱跑(看向人物边上某个点),会局限UI的设计。

因此最好的方法便是可以让人物在屏幕中的任意位置,同时旋转起来的时候,转动相机,同时人物相对屏幕的位置也保持不变,如图:

     

 

github:https://github.com/luckyWjr/Demo

 

思路

因为相机看向的点(这里我们叫他LookedAt点),永远在屏幕的中央。假设我们的人物放在UI的左侧,那么我们要保证旋转相机的时候,人物的点(这里我们叫他Target点)在相机Camera看来始终在LookedAt点的左边。

我们可以把LookedAt点,Target点,和Camera,三个点想象成一个三角形,然后这个三角形围绕着Target点旋转,也就是LookedAt点和Camera同时以相同速度(角度/每秒)围绕Target点公转。即可实现我们要的效果

视角俯视或仰视的话,只需修改Camera的高度,其他两个点不动。

视角拉近或拉远,则需要同比例修改LookedAt点到Target点的距离和Camera到Target点的距离,Target点不动,即可保持三角形的三个角的角度不变。

 

代码实现

首先我们先搭建一个简单的场景,如图,Target点在LookAt点的左侧

我们可以先通过一些参数来初始化Camera的位置,然后此时Camera,LookedAt和Target三个点形成的三角形即我们到时候要旋转的样式。

然后获取变成和角度等,来计算旋转后的偏移值等等。具体注释见下面代码:

using UnityEngine;

[ExecuteInEditMode]
[RequireComponent(typeof(Camera))]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值