中小型网站建设与管理,久久建筑网 围栏工程专项施工方案,软件开发公司起名,网站竞争对手如何做调研1.搜索godot国内镜像#xff0c;直接安装#xff0c;mono是csharp版本 2.直接解压#xff0c;50m#xff0c;无需安装#xff0c;直接运行 3.godot里分为场景#xff0c;节点 主场景用control场景#xff0c;下面挂textureact放背景图片#xff0c;右键实例化子场景把… 1.搜索godot国内镜像直接安装mono是csharp版本 2.直接解压50m无需安装直接运行 3.godot里分为场景节点 主场景用control场景下面挂textureact放背景图片右键实例化子场景把角色场景加进来
角色场景用node2d场景下面挂node2d节点下面挂sprite节点放图片做player
子弹场景用node2d场景下面挂label节点写一个“O”做子弹
如下 4.sprite脚本 extends Sprite2D # 继承自Node2D或者如果你的角色是一个精灵可以继承自Sprite #var speed 200 # 角色的移动速度可以根据需要调整
var bullet_speed 100
var bullet_instance null
onready var bullet_scene preload(res://botton.tscn)
onready var player_sprite $player_sprite
var flag 0;# 当节点首次进入场景树时被调用
func _ready(): if(player_sprite null):print(player_sprite null)flag 1;pass # 初始化代码可以放在这里但在这个例子中我们不需要 func field_booton():bullet_instance bullet_scene.instantiate() get_tree().root.add_child(bullet_instance)if(player_sprite):bullet_instance.position player_sprite.positionelse:bullet_instance.position position func _process(delta): var velocity Vector2.ZERO # 初始化速度为0 # 检测WSAD键并设置相应的速度 if Input.is_action_pressed(ui_up): #velocity.y - 1 position position Vector2(0, -5)if Input.is_action_pressed(ui_down): #velocity.y 1 position position Vector2(0, 5)if Input.is_action_pressed(ui_left): #velocity.x - 1 position position Vector2(-5, 0)if Input.is_action_pressed(ui_right): #velocity.x 1 position position Vector2(5, 0)if Input.is_action_just_pressed(ui_accept): field_booton()# 标准化速度向量可选取决于你是否想要对角移动速度保持一致 #if velocity.length_squared() 0: #velocity velocity.normalized() * speed # 更新角色的位置 #position velocity * deltaif bullet_instance:bullet_instance.position.x bullet_speed * delta
注意 1、应该用delta保持不同平台的移动是一样的
2、onready var player_sprite $player_sprite这个拿到的是null不知道为什么为什么是null因为$是在子节点里找child我们加脚本应该在node2d里加不应该在sprite2d里加
3、onready已经被废弃使用onready
4、instanse()已经被废弃使用instansite()
5、不能直接add_child(bullet_instance)而是应该get_tree().root.add_child(bullet_instance)不然子弹和sprite其实是一个节点上下移动都是相对的 5.botton脚本 extends Label# Called when the node enters the scene tree for the first time.
func _ready():pass # Replace with function body.# Called every frame. delta is the elapsed time since the previous frame.
func _process(delta):position position Vector2(4, 0)pass 6.注意connect在godot4也被改了改成两个参数了 func _ready():
# 假设我们有一个 Button 节点实例并且我们想要连接其 pressed 信号到一个函数 connect(button_down, self._on_button_pressed) # 然后定义处理按钮点击的函数
func _on_button_pressed(): print(click the button)pass # Replace with function body. 7.注意button只能是contrl和node的子类不能是node2d的子类 8.注意层级关系 场景
main(contrl)
--background(textureact)
--player(node2d, this position add script)--player(sprite),preload(res//boom.tscn)
--A(contrl)--A(button), preload(res//menu.tscn)资源
menu.tscn(button)--get_tree().root.add_child()
boom.tscn(label or others)--get_tree().root.add_child() 9.lable不能放在node下面应该放在node2的下面