Scratch

状课网-少儿编程网课专业平台

Scratch 跟我学scratch编程:3D动态背景

发布时间:2021-11-29 11:47:49 浏览 0

  之前CC哥做过一个背景滚动的教程,最近CC哥在网上看了一个坦克大战的游戏,其中的3D背景很有特色,就特意把其中的背景部分抽取了出来,跟大家分享一下3D背景的制作特点。

  我们先看一下这个背景部分的视频:

  是不是很有特色?

  我们看看这个3D背景的特征是什么?跟2D有什么不同:

  1:最明显的就是第一视角,平常我们玩2D游戏,差不多都属于旁观者的视角,也就是象一个旁观者在看着游戏的发展。我们平常玩的王者荣耀就是2.5D了,属于上帝视角,从高往下去观察游戏的发展。而吃鸡就是明显的3D游戏,游戏以玩家的第一视角去开展,好像你身在游戏之中。

  2:即然是第一视角,那么场景中的每个元素的变化就应该符合客观世界的规律,比如物体离的越远就越小,离得越近就越大。视角可以有前后左右四个方向,做的好的还应该有上下两个方向。

  让我们分析一下我们这个游戏背景的特点:

  1:山脉,山脉其实在游戏里是2D的,因为,不论我们前进后退,山脉的大小不会变化,不符合3D的特点。但是我们可以把山脉理解成布景,也就是太远了,你的前进后退可以被忽略不计的。就象远处的布景。

  2:草地,草地就是3D的场景,要符合第一视角的规律。所以我们的3D场景的体现是通过草地来表现出来的,比如你仔细去看草,离你越近,草越大,离你越远草越小。

  山脉背景角色1:mountains 山脉

跟我学scratch编程:3D动态背景

  山脉的特点就是连绵不断,就象之前的循环背景那一课一样,图片首尾相接就可以实现连绵不断,那一讲只是两张图片首尾相接,而这个背景是四张图片首尾相接。那么编程就会有些变化。如果要想更好的理解程序,首先要理解:

  连绵不断就是360度无死角,也就是四张图片连接起来,代表了360的视角。那么当视角每旋转一度,图片移动多远呢?

  因为是4张,那么每张图片就是代表了90度的视角,而每张图片刚好可以占满舞台的宽度。也就是90度的视角对应了480的距离,那么每一度就是480/90=5.3了。

  另外一点就是注意第一视角的特点,当你向右看时,背景往哪边移动?对了,往左边移动,所以大家要记住,视角的移动方向和场景的移动方向是相反的。

跟我学scratch编程:3D动态背景

  编者用了克隆的方式来呈现四张图片,而不是用4个角色来实现,和简化了编程。

  但是既然用克隆来实现,那么控制操作就要做好了。

 

  如果想免费获得CC哥的讲座中的程序代码以及游戏素材,可以通过扫描二维码关注《跟我学scratch编程》,然后点击获取代码即可。也就是要控制好,根据视角的位置来确定每张图片的显示位置:

跟我学scratch编程:3D动态背景

  这部分就是第四张图片的位置,也就是第四张图片只会出现在-90度到90度的视角范围内,当视角为0度时,第四张图片的位置正好中心点在x轴的0点处。当视角向左移动时,图片开始向右移动,每一度移动5.3步。

跟我学scratch编程:3D动态背景

  这部分是图片3的代码,图片3就出现在-180度到0度的视角。图片3连接在图片4的左边,所以计算位置是,要把视角#RadarD变量左移90度。也就是移动90乘以-5.3。

跟我学scratch编程:3D动态背景

  图二因为是跨越了180度这个点,也就是-90度到-180度,90度到180度。在Scratch里,-180度和180度是一个点。所以编程的部分需要判断一下。

  我们把控制部分,也就是左右箭头,用来控制视角转动的部分放到了另外一个单独的控制角色里。

跟我学scratch编程:3D动态背景

  因为每一个事件命令,都会被所有的克隆体执行一遍,所以如果你把这个代码放到mountains这个角色里,那么每当你按下左右键时,下面的代码都会被执行4遍!

 

  如果想免费获得CC哥的讲座中的程序代码以及游戏素材,可以通过扫描二维码关注《跟我学Scratch编程》,然后点击获取代码即可

  草地场景

  草地可不简单,光造型就有19个,作者很用心,想体现出越远,草越平的视觉效果,能理解不?拿出一张风景照片看看,看看是不是在极远处,所有的景物都变成了一条线嗯?所以3D视觉效果不是简单的只是调整大小,高低的变化是更明显的。

跟我学scratch编程:3D动态背景

跟我学scratch编程:3D动态背景

跟我学scratch编程:3D动态背景

  草也是克隆的,克隆22次。随机分布在指定区域。

跟我学scratch编程:3D动态背景

  有一个画草的自定义命令,大家可以注意,有3种效果,虚像,大小,和高低(造型),通过这三种效果来呈现3D效果,而关键变量都是y坐标。y坐标越低,就离你的视角越近,相反就越远,越接近0就越接近遥远的水平线。

跟我学scratch编程:3D动态背景

  当我们用左右箭头按键时,也会广播出草左右移动的消息,大家注意没有,3D场景移动时的效果也不一样,y坐标越靠下,就表示离你越近,那么每次移动的距离就越大,而y坐标越靠近中部,那么表示离你越远,每次移动的距离也就越小。所以,草的左右移动,也与视角的距离有关。

跟我学scratch编程:3D动态背景

  草的场景是可以前后移动的,#Speed这个变量正为往前,负为向后,我们分了五挡:-0.4,-0.2,0,0.2,0.4。

  所有的草都是180度方向(草这个角色的方向初始时设定为180度),当视角前移时,所有的草只要正向移动就代表了下移。当视角后移时,#Speed变量为负值,草的移动就为反向移动,就代表了上移。移动的速度跟草离视角的远近相关。

  大家注意,当视角前移时,远处的场景不但离你越来越近,同时在视角里是不断左右分开的,最终离开你的视线。所以你还要设计好X方向的移动。x方向移动的速度也与本身所在x轴的位置有关。

跟我学scratch编程:3D动态背景

  剩下的就是注意在草碰到上下左右四个边界处的处理。

  特别注意的是,当你的视角往前跑时,那么草都是从水平线处出现的,然后向你移动过来。消失在两边或底部。但是当你后退时,草不仅仅是从底部出来,而是会从下面和两边同时出来。大家想想这里面的逻辑,闭上眼想象一下你在草地上后退时,草会从哪个方向进入到你的视野里来。所以当视角后退时,草出现的程序就要单独处理。

跟我学scratch编程:3D动态背景

  作者这部分代码就是当后退时,草碰到边界时调用的代码。逻辑上用了概率分配,50%的草从底部出来,25%的草从左边出来,25%的草从右边出来。这样看起来,效果更真实了。

  这部分CC哥更多的是讲逻辑,代码部分没有细细讲,大家如果感兴趣,就自己好好研究吧。

  文章来源:跟我学scratch编程

本文链接:https://www.ascratch.com/news/17668.html

上一篇:跟我学scratch编程:自动生成迷宫 下一篇:返回列表