【Godot4自学手册】第三十四节来回无限滚动的伤害铁刺球

2024-04-04 22:12

本文主要是介绍【Godot4自学手册】第三十四节来回无限滚动的伤害铁刺球,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本节主要学习给地宫添加来回滚动的铁刺球,铁刺球共有两个方向,一个是左右方向;另一个是上下方向。如果主人公不小心碰到球,就会收到伤害。这是地宫的第一个机关。

一、新建场景并布局节点

把我们准备好的铁球图片素材拖入到文件系统的Sprites->Objects目录下。
然后新建Node2D场景,命名为RollingBar,存到Scenes目录下。将素材拖入到场景中。
请添加图片描述

二、让铁球无限滚动

选择根目录,添加脚本命名RollingBar.gd保存到Scripts目录下,编写如下脚本:

extends Node2D
@onready var moving_spikes = $MovingSpikes  #获取铁刺结点
@export var move_length:=Vector2(100.0,0.0)  #定义铁刺移动距离,并可以在外部调整
@export var move_time:float=0.8  #定义铁刺单次滚动时间,并可以在外部调整func _ready():move()  #调用移动函数func move():var tween = get_tree().create_tween()  #创建tween移动类tween.set_ease(Tween.EASE_IN_OUT)#EASE_IN = 0  插值开始缓慢,并加速接近结束。#EASE_OUT = 1  插值开始快速,接近结束时减慢。#EaseType EASE_IN_OUT = 2  EASE_IN 和 EASE_OUT 的组合。两端的插值最慢。#EaseType EASE_OUT_IN = 3  EASE_IN 和 EASE_OUT 的组合。两端的插值最快。tween.tween_property(moving_spikes,"position",moving_spikes.position+move_length,move_time)#设置铁刺move_time时间内完成move_length的距离move_length *=-1  #改变move_length的方向tween.tween_callback(move) #铁刺移动到指定位置,转变方向继续移动,函数的递归,函数自己调用自己,只是参数不同

三、给铁球添加伤害

为根节点添加Area2D节点,命名为HitSpikes,为该节点添加CollisionShape2D子节点,然后在其检查器中Shape属性选择新建CircleShape2D,然后调整合适大小。
请添加图片描述

然后将HitSpikes的Collision下Layer设置为Object,Mask设置为Player,表示铁刺球和主人公发生碰撞。
请添加图片描述

然后选择切换到信号节点,找到body_entered(body:Node2D),双击弹出对话框选择RollingBar。
请添加图片描述

然后在代码页面输入如下代码:

func _on_hit_spikes_body_entered(body):if body.name=="Player":body.state=3

这样就完成了主人公的受伤功能了。

四、主场景横竖两个方向调用铁球

切换到underground场景,将上述建立的RollingBar场景2次实例化到该场景,移动到合适位置。如下图:
请添加图片描述

位置1的参数设置如下:
请添加图片描述

位置2的参数设置如下:
请添加图片描述

这样就实现了一个左右移动和上下移动的铁刺:
请添加图片描述

这篇关于【Godot4自学手册】第三十四节来回无限滚动的伤害铁刺球的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/876936

相关文章

html 滚动条滚动过快会留下边框线的解决方案

《html滚动条滚动过快会留下边框线的解决方案》:本文主要介绍了html滚动条滚动过快会留下边框线的解决方案,解决方法很简单,详细内容请阅读本文,希望能对你有所帮助... 滚动条滚动过快时,会留下边框线但其实大部分时候是这样的,没有多出边框线的滚动条滚动过快时留下边框线的问题通常与滚动条样式和滚动行

uniapp小程序中实现无缝衔接滚动效果代码示例

《uniapp小程序中实现无缝衔接滚动效果代码示例》:本文主要介绍uniapp小程序中实现无缝衔接滚动效果的相关资料,该方法可以实现滚动内容中字的不同的颜色更改,并且可以根据需要进行艺术化更改和自... 组件滚动通知只能实现简单的滚动效果,不能实现滚动内容中的字进行不同颜色的更改,下面实现一个无缝衔接的滚动

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Jackson库进行JSON 序列化时遇到了无限递归(Infinite Recursion)的问题及解决方案

《Jackson库进行JSON序列化时遇到了无限递归(InfiniteRecursion)的问题及解决方案》使用Jackson库进行JSON序列化时遇到了无限递归(InfiniteRecursi... 目录解决方案‌1. 使用 @jsonIgnore 忽略一个方向的引用2. 使用 @JsonManagedR

禁止HTML页面滚动的操作方法

《禁止HTML页面滚动的操作方法》:本文主要介绍了三种禁止HTML页面滚动的方法:通过CSS的overflow属性、使用JavaScript的滚动事件监听器以及使用CSS的position:fixed属性,每种方法都有其适用场景和优缺点,详细内容请阅读本文,希望能对你有所帮助... 在前端开发中,禁止htm

linux dlopen手册翻译

名称 dlclose, dlopen, dlmopen 打开和关闭一个共享对象 简介 #include <dlfcn.h>void *dlopen(const char*filename, int flags);int dlclose(void *handle);#define _GNU_SOURCE#include <dlfcn.h>void *dlmoopen(Lmid_t lm

颠覆你的开发模式:敏捷思维带来的无限可能

敏捷软件开发作为现代软件工程的重要方法论,强调快速响应变化和持续交付价值。通过灵活的开发模式和高效的团队协作,敏捷方法在应对动态变化和不确定性方面表现出色。本文将结合学习和分析,探讨系统变化对敏捷开发的影响、业务与技术的对齐以及敏捷方法如何在产品开发过程中处理持续变化和迭代。 系统变化对敏捷软件开发的影响 在敏捷软件开发中,系统变化的管理至关重要。系统变化可以是需求的改变、技术的升级、

UniApp实现漂亮的音乐歌词滚动播放效果

在现代的音乐播放应用中,歌词的展示和滚动播放已经成为了一个非常常见的功能。今天,我们将通过UniApp来实现一个漂亮的歌词滚动播放功能。我们将使用UniApp提供的组件和API来完成这个任务。 页面结构 在页面的模板部分,我们需要创建一个音频播放器和歌词展示区域。使用<scroll-view>组件来实现歌词的滚动效果。 <template><view class="audio-co

使用亚马逊Bedrock的Stable Diffusion XL模型实现文本到图像生成:探索AI的无限创意

引言 什么是Amazon Bedrock? Amazon Bedrock是亚马逊云服务(AWS)推出的一项旗舰服务,旨在推动生成式人工智能(AI)在各行业的广泛应用。它的核心功能是提供由顶尖AI公司(如AI21 Labs、Anthropic、Cohere、Meta、Mistral AI、Stability AI以及亚马逊自身)开发的多种基础模型(Foundation Models,简称FMs)。

hdu2073(无限的路)

无限的路 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 5148    Accepted Submission(s): 2653 Problem Description 甜甜从小就喜欢画图画,最近他买了一支智能画笔,