Godot游戏开发日志-14
1 制作击中动画添加击中动画,另存为hit_effect.tsc 2 将击中动画添加到hurtbox.gdhurtbox 通用的effect的脚本,预加载 一旦检测到受击,实例化保存了击中动画的场景,添加为子节点 12345678910111213extends Area2Dconst HIT_EFFECT = preload("res://Effects/hit_effect.tscn")func _on_area_entered(area: Area2D) -> void: var effect = HIT_EFFECT.instantiate() #不使用get_parent().add_child()实例化,因为parent会被free() var main = get_tree().current_scene main.add_child(effect) effect.global_position = global_position 3...
Godot游戏开发日志-12
1 属性节点stats创建node2D节点stats,负责处理小怪属性 1234extends Node2D@export var max_health:int = 1@onready var health = max_health bat.gd,检测到碰撞,health值减1 1234func _on_hurtbox_area_entered(area):+ stats.health -= 1+ if stats.health <= 0:+ queue_free() 2 使用信号控制小怪消失为了更好的代码结构,加入信号,向下调用,向上信号,这样对象独立性更高,切记! stats.gd health被设置时,对应的set函数会被自动调用,可以借此自动发送信号 自动发送信号, 123456789101112extends Node2D@export var max_health:int = 1+- @onready var health = max_health:set=set_health+ signal...
Godot游戏开发日志-13
1 解决遗留bug1 先统一初始混合位置,全部设置成1,0,这样初始位置都是向右的,不会发生初始攻击、跑步的方向不一样的情况 2 制作蝙蝠摧毁动画1 先将草的effect场景删除,重命名草的脚本为Effect,作为所有动画的播放脚本 2 新建一个AnimatedSprite2D节点,命名为GrassEffect 3 和之前一样的操作,制作草的摧毁动画 3 重构effect脚本因为不再是子节点,重构effect.gd 123456789101112131415#重构,不再是子节点了#extends Node2Dextends AnimatedSprite2D#初始化播放动画func _ready() -> void: #animated_sprite_2d. play("Animate")#播放完消失func _on_animated_sprite_2d_animation_finished() -> void: queue_free() 4...
Godot游戏开发日志-11
1 新建蝙蝠小怪新建一个CharatBody2D节点Bat(蝙蝠小怪),保存在ememies目录下 2 制作蝙蝠待机动画1 在它下方新建一个动画节点AnimatedSprite2D,用来制作蝙蝠小怪动画,步骤: 添加素材图片Bat.png,有5张图片,所以Hframes设置成5 调整offsety坐标为-12(在坐标原点上方,实现漂浮),然后在animation菜单下新建SpriteFrame 动画命名为Fly,然后按下图添加动画素材 添加Bat.png做动画,横向5帧,竖向1帧,添加后设置动画为加载后自动播放 2 新建一张图片,关联smallshadow.png,作为阴影 3 给碰撞形状 play层级 bat层级 3 小怪受击检测1 制作小怪碰撞体积引入Hurtbox节点,组合之前的子节点,跳转连接,并改为可编辑,新增碰撞体积,碰撞框处于enemyhurtbox层 2 物理层级bat的hurtbox层级 player的SwordHitbox层级 3 更新玩家物理层Mask新增朝向enemy层 4 蝙蝠击退效果1...
Godot游戏开发日志-10
1 点击play节点,添加四个方向的新动画2 点击素材图片Sprite2D 插入关键帧,都打开循环3 在动画帧末尾添加轨道 call method track,接着选择对象player,插入翻滚完的回调函数roll_animation_finished()4 打开动画树节点,新增BlendSpace2D节点,与Idea互相连接5 y轴加上0.1,四方向加上滚动动画6 更新键盘映射
Godot游戏开发日志-9
1 Area2D节点新建2个Area2D节点——Hutrbox和Hitbox,分别给它们CollisionShape2D子节点,作为攻击和被攻击的伤害判定区 2 Hutrbox处理草场景引入hurtbox场景,打开子场景可编辑,给Hurtbox一个碰撞检测的形状和进入信号。 脚本逻辑更改,把上一节的创建草特效抽取为一个函数create_grass_effect(),hurtbox区域检测到信号,就播放摧毁动画,然后消失 grass.gd 12345678910111213extends Node2Dfunc create_grass_effect(): const GRASS_EFFECT = preload("res://Effects/grass_effect.tscn") var grassEffect = GRASS_EFFECT.instantiate() var world = get_tree().current_scene world.add_child(grassEffect) grassEffect.global_position =...
Godot游戏开发日志-8
1 节点管理技巧太多树节点放在world节点下了,新建一个node2d类型的Trees节点,所有的树节点都做它的子节点,记得调整ysort属性 2 创建草场景创建草节点,调整offset使其处在原点位置,多铺设几格“草” 3 创建草特效新建node2D节点GrassEffect,使用子节点AnimatedSprite2D制作简单动画,取消勾选居中 4 草的脚本按下攻击让当前节点消失 1234567extends Node2D# Called every frame. 'delta' is the elapsed time since the previous frame.func _process(delta: float) -> void: if Input.is_action_just_pressed("attack"): queue_free() 5 草特效的脚本播放摧毁特效 12345678extends Node2D@onready var animated_sprite_2d: AnimatedSprite2D...
Redis
第一章 NoSQL数据库学习目标1 了解什么是NoSQL 数据库及常见的NoSQL数据库 2 了解其他类型数据库 第一节 NoSQL数据库概述1.1 什么是NoSQL数据库 NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库。 不遵循SQL标准。 不支持ACID。 远超于SQL的性能。 1.2 NoSQL适用的场景 对数据高并发的读写 海量数据的读写 对数据高可扩展性的 1.3 NoSQL不适用的场景 需要事务支持 基于sql的结构化查询存储,处理复杂的关系查询 不支持事务,不支持ACID,不适用处理复杂关系的查询,但是redis每个都是原子操作 1.4 常见NoSQL数据库1.4.1 Memcached1 很早出现的NoSql数据库 2 数据都在内存中,一般不持久化 3 支持简单的key-value模式,支持类型单一 4 一般是作为缓存数据库辅助持久化的数据库 Memcached不支持持久化,仅支持key-value 1.4.2 Redis 1 几乎覆盖了Memcached的绝大部分功能 2...
Redis
不支持事务,不支持ACID,不适用处理复杂关系的查询,但是redis每个都是原子操作 常见的nosql1 Memcached 不支持持久化,仅支持key-value 2 Redis 支持持久化,更多数据结构 3 MongoDB 文档型数据库 –row 不转码,直接展示原参数 多实例关闭指定端口的redis服务 redis-cli -p 6379 shutdown Redis是单线程+多路复用,redis7以后在异步io那加了多线程概念 Redis五大数据类型 String List Hash (key-value键值对) Set (无序集合) Zset help命令 help @数据类型 1 key操作的相关命令 语法 功能 keys * 查看当前库所有key (匹配:keys *1) exists key 判断某个key是否存在 type key 查看你的key是什么类型 del key 删除指定的key数据 unlink key 非阻塞删除,仅将keys从keyspace元数据中删除,真正的删除会在后续异步操作 expire key...
Godot游戏开发日志-7
1 播放逻辑调整编辑器上取消勾选active,脚本里加上 12func _ready() -> void: animation_tree.active=true 这样只有在游戏开始时才播放,不会一直播放 2 添加攻击动画1 添加4方向攻击动画和动画树BlendSpace2D 2 给攻击加上混合位置1animation_tree.set("parameters/Attack/blend_position",input_vector) 3 使用状态机控制玩家动作加入枚举 123456enum { MOVE, ATTACK}var state = MOVE 动作状态交给状态机控制 1234567891011func _physics_process(delta: float) -> void: match state: MOVE: move_state(delta) ATTACK: attack_state(delta) ...... #原来的移动代码 4 加入攻击动作1 项目设置里添加输入映射 2...





