【Godot4自学手册】第二十一节掉落金币和收集

这一节我们主要学习敌人死亡后随机掉落金币,主人公可以进行拾取功能。

一、新建金币场景

新建场景,节点选择CharacterBody2D,命名为Coins,将场景保存到Scenes目录下。

1.新建节点

为根节点依次添加CollisionShape2D节点,表示金币本身碰撞体;AnimatedSprite2D节点,命名为AnimaS用于播放金币的动画;
Area2D节点,命名为PickBox,用于与主人公发生碰撞,实现金币收集功能,该节点下添加CollisionShape2D,表示碰撞形状。
节点如下:
请添加图片描述

2.配置节点属性

第一AnimaS节点设置。选中AnimaS节点,在其检查器中Animation->Sprite Frames属性下拉框中选择SpriteFrames,如下图:
请添加图片描述

在动画帧面板中default动画中单击从精灵表中添加帧按钮,选择我们准备好的金币图片素材,在选择帧对话框中水平设置为8,垂直设置为1,全选帧,然后单击添加帧按钮,这样就把8帧图片添加到default动画里面了,如下:
请添加图片描述

在动画帧面板中将动画速度设为10FPS,开启动画循环和自动播放功能,如下:
请添加图片描述

这样我们的动画就设置完成了。
第二PickBox节点配置。为该节点添加CollisionShape2D子节点,命名为pickcollision,然后选中该节点,在其检查器中Shape属性选择CircleShape2D圆形碰撞,大小调整比金币大一些,用于收集金币碰撞。
第三CollisionShape2D节点配置。在其检查器中Shape属性选择CircleShape2D圆形碰撞,大小调整和金币大小相同即可。
请添加图片描述

3.编写代码

选择根节点,为其添加代码,保存至Scenes下,命名为Coins,编写如下代码:

extends CharacterBody2D
var gravity = ProjectSettings.get_setting("physics/2d/default_gravity")
var isPick=false
func _ready():
	#爆金币特效
	
	var tween = get_tree().create_tween()  #创建间补动画
	tween.tween_property(self,"velocity",Vector2(randi_range(-100,100),randi_range(-100,-200)),0.5)
	tween.tween_property(self,"velocity",Vector2(0,300),0.3)
	tween.tween_callback(velocityZero) 
	 #设置X速度0.3秒到达-150	
	pass

func _physics_process(delta):
	move_and_slide()
	pass
	
func pickUp():	#拾取金币动画
	if isPick:
		var tween = get_tree().create_tween()  #创建间补动画
		tween.tween_property(self,"velocity",Vector2(0,-200),0.5) #设置X速度0.3秒到达-150
		tween.parallel().tween_property(self,"modulate:a",0,0.5) #0.3秒对象变为透明
		tween.tween_callback(self.queue_free) #播放完间补动画,自动释放金币
	pass
	
func velocityZero():
	velocity = Vector2.ZERO
	isPick=true

func _on_pick_box_body_entered(body):
	pickUp()
	pass # Replace with function body

上述代码,_ready函数定义了金币初始状态,爆金币特效;pickUp()函数定义了拾取金币特效。

三、敌人场景设置

切换到Enemy场景代码,添加新函数coin_spawn,该函数主要是在主场景根目录下生成一个金币。代码如下:

func coin_spawn():
	var coin = coinpre.instantiate()
	coin.position = self.position
	Globals.duplicate_node.add_child(coin)

该代码运行前还需要预先载入金币,代码如下:

var coinpre = preload("res://Scenes/Coins.tscn")

然后修改death_state函数,实现敌人死亡随机爆出1至6个金币,代码如下:

func death_state():		
	Globals.animation_scene_obj.run_animation({
		"box":Globals.duplicate_node,
		"ani_name":"Dealth",
		"position":self.global_position,
		"scale":Vector2(1,1)
	})
	for i in randi_range(1,6):
		coin_spawn()
	self.queue_free()

三、最终效果

这样我们就实现敌人死亡后随机调取金币并进行了拾取功能,演示如下:
请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

阿里云服务器使用教程_2024建站教程_10分钟网站搭建流程

使用阿里云服务器快速搭建网站教程,先为云服务器安装宝塔面板,然后在宝塔面板上新建站点,阿里云服务器网aliyunfuwuqi.com以搭建WordPress网站博客为例,来详细说下从阿里云服务器CPU内存配置选择、Web环境、域名解析到网站上线全流…

Dubbo基础入门二

8、Dubbo协议 服务调用 8.1 服务端 启动过程深入分析 我们查看一下服务启动的过程 ProtocolFilterWrapper.export 好我们进入DubboProtocol.export 创建服务 分析我们的Handler 我们接着返回刚才位置 下面的super方法里面会创建服务,ChannelHandlers.wrap会对hand…

2024年3月8日蚂蚁新村今日答案:以下哪一项传统武术项目入选了人类非物质文化遗产代表作名录?太极拳还是咏春拳

蚂蚁新村是一个虚拟社区。在这个虚拟社区中,用户可以参与各种活动,比如生产能量豆、做慈善捐赠等。同时,蚂蚁新村也提供了一些知识问答环节,用户在参与的过程中可以增进知识。这些问答内容往往涉及广泛的主题,如文化、…

idea Gradle 控制台中文乱码

如下图所示,idea 中的 Gradle 控制台中文乱码: 解决方法,如下图所示: 注意:如果你的 idea 使用 crack 等方式破解了,那么你可能需要在文件 crack-2023\jetbra\vmoptions\idea.vmoptions 中进行配置&#xf…

git分布式管理-头歌实验标签

一、创建标签 任务描述 现在你已经成了项目负责人,由你负责发布版本,你需要在发布一个版本之前,给该版本对应的代码打上标签,以便于管理和标识。 本关任务:为最近一次提交打上标签。 相关知识 在开发过程中&#xff0c…

Android14之禁止vbmeta.img签名校验(一百九十)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

七彩虹八渐变 外贸建站公司wordpress模板

进出口水果wordpress外贸模板 漂亮水果wordpress外贸模板,做水果进出品生意的外贸公司自建站官网模板。 https://www.jianzhanpress.com/?p3516 玩具wordpress外贸模板 简洁玩具wordpress外贸模板,适合做跨境电商外贸公司使用的wordpres外贸s网站主题…

追寻工作与生活的和谐之道

在现代社会,人们往往被快节奏的工作和生活所困扰,如何在这两者之间找到平衡点,成为许多人关注的焦点。本文将为您介绍一些实用的方法和建议,帮助您实现工作与生活的和谐共处。 一、合理规划时间,提高工作效率 时间是实…

day37 贪心算法part6

738. 单调递增的数字 中等 提示 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数字呈 单调递增 。 不知道怎么讲思路……以9287举例&#xff0c;…

CorelDRAW2024中文版正式发布!老户升级可享大额折扣!CDR2024下载安装 CorelDRAW2024更新内容有哪些

CorelDRAW 全称“CorelDRAW Graphics Suite“&#xff0c;也就是众所周知的”CDR“&#xff0c;是一款智能高效的平面设计软件&#xff0c;广泛应用于排版印刷、矢量图形编辑及网页设计等领域&#xff0c;30多年来无数优秀的设计师通过CorelDRAW大胆展现真我&#xff0c;交付了…

学习408之数据结构--链表-单链表的增删查改的实现-如何解决顺序表增容后空间浪费问题?

顺序表的问题及思考问题&#xff1a; 中间/头部的插入删除&#xff0c;时间复杂度为O(N)增容需要申请新空间&#xff0c;拷贝数据&#xff0c;释放旧空间。会有不小的消耗。增容一般是呈2倍的增长&#xff0c;势必会有一定的空间浪费。例如当前容量为100&#xff0c;满了以后增…

#QT(智能家居界面-布局)

1.IDE&#xff1a;QTCreator 2.实验&#xff1a; 水平布局&#xff0c;垂直布局&#xff0c;栅格布局&#xff08;弹簧&#xff09; 界面自动调整 3.记录 注意弹簧不是拖拽拉长&#xff0c;而是使用栅格布局 运行发现窗口放大缩小可以自动调整 如果想要重新布局&#xff0c;需…

ubuntu20.04安装ros并配置相关环境以及驱动AUBO i5机械臂

ubuntu20.04安装ros并配置相关环境以及驱动AUBO i5机械臂 安装ros安装rosdep(小鱼的rosdepc,又快又好用)环境配置下载并编译aubo roslib库环境变量配置aubo gazeboaubo rviz驱动真实机械臂 安装ros 搜索鱼香ros网站https://fishros.com/&#xff0c;根据一键安装ros里提供的指…

某讯滑块动态明文数组构造

声明&#xff1a; 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;若有侵权&#xff0c;请添加&#xff08;wx&#xff1a;wyqlxl99&#xff09;联系删除 …

R语言,实现MACD指标计算:股票技术分析的利器系列(1)

R语言&#xff0c;实现MACD指标计算&#xff1a;股票技术分析的利器系列&#xff08;1&#xff09; MACD指标代码完整代码介绍代码EMA函数calculate_DEA 函数calculate_MACD 函数 运行结果 MACD指标 先看看官方介绍&#xff1a; MACD (平滑异同平均线&#xff09; 指标说明 DI…

智引未来:2024年科技革新引领工业界变革与机遇

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

苍穹外卖技术栈

Day5 Redis_Spring Data Redis使用方法 Spring Data Redis Spring Date Redis 是Spring的一部分&#xff0c; 对Redis底层开发包进行了高度封装&#xff0c;在Spring项目中&#xff0c;可以使用Spring Data Redis来简化操作。 操作步骤 导入Spring Data Redis 的maven坐标配置…

cefsharp(winForm)调用js脚本,js脚本调用c#方法

本博文针对js-csharp交互(相互调用的应用) (一)、js调用c#方法 1.1 类名称:cs_js_obj public class cs_js_obj{//注意,js调用C#,不一定在主线程上调用的,需要用SynchronizationContext来切换到主线程//private System.Threading.SynchronizationContext context;//…

一键清除JavaScript代码中的注释:使用正则表达式实现

这个正则表达式可以有效地匹配 JavaScript 代码中的各种注释&#xff0c;并且跳过了以 http: 或 https: 开头的链接。 /\/\*[\s\S]*?\*\/|\/\/[^\n]*|<!--[\s\S]*?-->|(?<!http:|https:)\/\/[^\n]*/gvscode 实战&#xff0c;ctrlF 调出查找替换工具&#xff0c;点…

Windows环境下搭建chatGLM-6B-int4量化版模型(图文详解-成果案例)

目录 一、ChatGLM-6B介绍 二、环境准备 1. 硬件环境 2. TDM-GCC安装 3.git安装 4.Anaconda安装 三、模型安装 1.下载ChatGLM-6b和环境准备 方式一&#xff1a;git命令 方式二&#xff1a;手动下载 2.下载预训练模型 方式一&#xff1a;在Hugging Face HUb下载&…