Unity让背景图片随着角色的移动而移动

发布时间 2023-09-18 01:42:45作者: dewxin

背景介绍

做2D横版游戏的时候,通常会放置一个背景图片,但如果背景图片一动不动,大脑会将其和中心位置的角色捆绑,从而给玩家一种变扭的感觉,以及久了会导致眩目的不良体验。

因此希望背景图片也能像日常中的远景一样,能够随着人物的移动而移动。

目标效果

我们期望在地图左下角的时候,显示的是背景左下角的部分。 当角色在地图右上角的时候,显示的是背景右上角的部分。左上角,右下角同理。

方法

首先我们可以发现,相机视窗的中点是有移动范围的,(0.5f * 相机的宽, 0.5f * 相机的高) ~ (场景的宽- 0.5f * 相机的宽, 场景的高 - 0.5f * 相机的高)。

类似的,如果我们把背景看做静止的,相机的移动范围如下 (0.5f * 相机的宽, 0.5f * 相机的高) ~ (背景的宽- 0.5f * 相机的宽, 背景的高 - 0.5f * 相机的高)

我们可以从相机中点在场景中的标准化设备坐标(xFloat,yFloat)得到相对背景中点位置的偏移值为(xFloat-0.5f,yFloat-0.5f) × (背景的宽-相机的宽,背景的高-相机的高)。

那么,背景中点相对相机中点的位置取负值即可, - (xFloat-0.5f,yFloat-0.5f) × (背景的宽-相机的宽, 背景的高-相机的高)。

效果