【Godot_4.2.2】制作一个2d传输带(即平台静止,但平台上的角色移动)

关键词:Godot、4.2.2、2d、传输带、电梯、平台、传输平台、静止平台

前言:楼主是godot小白,还在学习中,文章仅作为笔记。如有错误,还请大佬们指出,先谢谢了。

问题:如何在godot中制作一个2d传输平台?即平台静止,但平台上的角色(或其他角色、物体)会移动,类似工厂流水线里的传输带

解决方法:
先创建一个供角色站立的平台:StaticBody2D(平台或地面一般选这个。不要选Area2d,站不了)+CollisionShape2D(碰撞体,形状
选哪个都行,这里我用的是长方形)+Sprite2D(用于添加图片。如果你的该平台是动画,如传输带在移动,那么请选AnimatedSprite2D)
在这里插入图片描述

然后创建一个角色:CharacterBody2D(玩家的角色)+CollisionShape2D(碰撞体)+Sprite2D(角色图片。如果你的角色有动画,如站立或跑步,那么请选AnimatedSprite2D)。由于创建CharacterBody2D后其本身已有代码,该角色能左右移动+跳跃,故此处不再赘述。

在①的StaticBody2D里添加:Area2d(判断玩家是否在该区域)+CollisionShape2D(碰撞体)。在①的外面也行,但由于它属于传输平台的内容,所以最好归类放在一起。还要注意碰撞体的长度需要和①的平台相同、高度一点点就行、位置放在①的平台的上方,效果如图所示(因为想要的效果是玩家踩在传输平台上时,玩家才移动;若高度太高,玩家可能还没落在平台上时就在移动了)
在这里插入图片描述

点击刚才创建的Ared2d(在屏幕左侧),再点击右上角的“节点”页签,然后分别双击body_entered(body:Node2D)和body_exited(body:Node2D),并连接到②中创建的角色CharacterBody2D(下图2里叫Player是因为我改了名而已)
在这里插入图片描述
在这里插入图片描述

打开②中CharacterBody2D的脚本,现在ready方法前先定义一个bool布尔型变量:on_platform,用于判断玩家是否在该传输带上。玩家初始情况下不会在上面,所以给它一个初始值false。
在这里插入图片描述

再定义一个SPEED,用于控制玩家在传送带上的速度,这里可以是常量(将var改为const即可)。记得为它赋值!
在这里插入图片描述

还是刚才那个脚本,由于④的时候通过信号连接到本脚本,后续代码如下。
当玩家进入③创建的区域内时,判断为玩家在传输带上,即on_platform = true ;当玩家离开时,on_platform又变回 false
在这里插入图片描述

然后在帧处理的方法中添加代码(func _process(delta):或func _process(delta):,它们的区别这里不展开描述,请自行百度或查看官方文档),代码如下。如果on_platform的值为true(即玩家在平台上),则改变玩家的x坐标,使其向左或向右(向左移动为减号-,向右移动为加号+)
在这里插入图片描述

按F6运行当前场景,此时玩家跳上该移动平台后,会发现角色在平台上移动,就好像站在传输带(或电梯)上一样。
至此,一个简单的传输带功能已完成。

总结:在平台上方创建一个高度很低的区域,玩家进入该区域时修改玩家坐标的x值,使其看上去像是在传输带上移动;离开该区域后则停止修改玩家坐标。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值