摄像头坐标的含义
实际上,摄像头x、摄像头y对应的是屏幕中心点对准的地图坐标。
例如,使用下面的代码,将摄像头直接对准地图上(114,514)的位置:
在前面,我们使用下面的代码让玩家移到正确位置。这个代码要怎么理解呢?
看下面的例子,摄像头(也就是屏幕中心)对准了地图上的坐标(51,51),也就是摄像头坐标为(51,51)。玩家此时在地图上的位置坐标为(100,100),那么玩家实际在舞台上的坐标,就是“玩家地图坐标”减去“屏幕中心对应的地图坐标”(即摄像头坐标)。因此有:
玩家舞台x = 玩家地图x - 摄像头x = 49玩家舞台y = 玩家地图y - 摄像头y = 49
让摄像头跟随玩家
在前面的代码中,我们通过上下左右键直接操控摄像头移动。但实际上,我们通常不直接控制摄像头移动,而是让摄像头跟随玩家。将玩家中的代码作如下修改:
这样,摄像头会一直跟随玩家。
我们还可以给摄像头的跟随添加一个变速效果。将代码作如下修改:
下面的这种写法其实非常常见,用于实现丝滑的变速效果:每次将变量和目标值的距缩小20%,从而渐渐逼近。
其中的 0.2 可以看成速度系数,越大变化越快。
运行效果:摄像头将变速跟随玩家,看起来非常丝滑。
我们可以新建一个角色,命名为摄像头,然后将控制摄像头的代码从“玩家”角色迁移到“摄像头”角色里。
删除玩家中控制摄像头的代码,然后在“摄像头”角色中,添加下面的代码:
目前为止,各个角色中的代码看起来是这样:
- 玩家代码:
- 背景角色代码:
- 摄像头角色代码:
<iframe
width="100%"
height="800px"
scrolling="no"
src="https://www.ccw.site/embed?id=STG202/Arkos/Lec1/02&type=comment"
title="{射击1-让摄像头跟随玩家}"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowFullScreen
scrolling="0"
></iframe>