三角洲辅助卡盟新版上线,应有尽有
当前位置:首页 > 游戏攻略> 正文

h2 游戏概述

发布时间:06/21 10:50:06
零基础用Godot4快速搭建2D射击游戏核心框架实操指南

游戏概述

本次实操搭建零门槛2D射击游戏核心框架,包含玩家方向控制、鼠标定位发射子弹、屏幕边缘随机生成敌人、子弹-敌人碰撞销毁四大核心功能,全程使用Godot内置资源,无需下载额外素材,完成后可直接测试运行。

实操环境准备

1. 安装Godot4引擎

Windows系统打开CMD,执行命令:

``` winget install GodotEngine.Godot4 ```

执行后确认安装成功:输入godot --version,输出包含4.2.x版本号即完成。

核心框架搭建实操

步骤1:创建项目

打开Godot引擎,点击主界面「新建项目」,填写项目名称为「2D射击核心框架」,选择本地空文件夹作为项目路径,引擎版本选4.2稳定版,点击「创建」完成项目初始化。

步骤2:搭建玩家节点

在Godot的2D场景编辑区,点击节点面板「+」,添加CharacterBody2D节点,命名为「Player」;为Player添加2个子节点:Sprite2D(命名为PlayerSprite)、CollisionShape2D(命名为PlayerCollision)。

设置PlayerSprite:点击其「纹理」属性,选择「内置纹理」,类型为「Rect2」,尺寸设为32×48,颜色填「0088ff」;设置PlayerCollision:「形状」属性选「RectangleShape2D」,尺寸与PlayerSprite一致(32×48)。

步骤3:玩家移动脚本编写

选中Player节点,点击脚本面板「新建脚本」,脚本附加到Player,复制以下代码:

```gdscript extends CharacterBody2D @export var move_speed = 300.0 func _physics_process(delta: float) -> void: var input_dir = Input.get_vector("left", "right", "up", "down") velocity = input_dir move_speed move_and_slide() ```

步骤4:搭建子弹节点

在场景面板点击「+」,添加Area2D节点,命名为「Bullet」;添加2个子节点:Sprite2D(BulletSprite)、CollisionShape2D(BulletCollision)。

设置BulletSprite:内置纹理Rect2,尺寸8×16,颜色「ff4444」;BulletCollision:形状选「CircleShape2D」,半径4。重要操作:选中Bullet节点,右键→「将当前值保存为场景」,文件名填「Bullet.tscn」,保存到项目根目录

步骤5:子弹发射逻辑实现

回到Player节点,点击脚本面板,修改Player的脚本,添加以下代码:

```gdscript extends CharacterBody2D @export var move_speed = 300.0 @export var bullet_scene: PackedScene preload("res://Bullet.tscn") func _physics_process(delta: float) -> void: var input_dir = Input.get_vector("left", "right", "up", "down") velocity = input_dir move_speed move_and_slide() func _input(event: InputEvent) -> void: if event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_LEFT: var bullet = bullet_scene.instantiate() bullet.position = position bullet.direction = (get_global_mouse_position() - position).normalized() add_child(bullet) ```

步骤6:子弹边界与碰撞逻辑

选中Bullet节点,点击信号面板,找到body_entered信号,点击「连接」,选择自身(Bullet节点),函数名填_on_body_entered,确认连接。然后修改Bullet脚本:

```gdscript extends Area2D @export var speed = 600.0 var direction = Vector2.ZERO func _physics_process(delta: float) -> void: position += direction speed delta var viewport = get_viewport() if position.x < -50 or position.x > viewport.size.x + 50 or position.y < -50 or position.y > viewport.size.y +50: queue_free() func _on_body_entered(body: Node2D) -> void: if body.name.begins_with("Enemy"): body.queue_free() queue_free() ```

步骤7:敌人生成逻辑

添加敌人节点:点击节点面板「+」,添加StaticBody2D节点,命名为「Enemy」;添加子节点Sprite2D(EnemySprite)、CollisionShape2D(EnemyCollision)。设置EnemySprite:内置纹理Rect2,尺寸32×32,颜色「88ff00」;EnemyCollision:CircleShape2D,半径16。重要操作:选中Enemy节点,右键→「保存为场景」,文件名「Enemy.tscn」,存到项目根目录

添加生成器节点:点击节点面板「+」,添加Node2D节点,命名为「EnemySpawner」,附加以下脚本:

```gdscript extends Node2D @export var enemy_scene: PackedScene preload("res://Enemy.tscn") @export var spawn_interval = 1.0 var timer = 0.0 func _process(delta: float) -> void: timer += delta if timer >= spawn_interval: timer = 0.0 spawn_enemy() func spawn_enemy() -> void: var viewport_size = get_viewport().size var random_x = rand_range(0, viewport_size.x) var enemy = enemy_scene.instantiate() enemy.position = Vector2(random_x, -30) add_child(enemy) ```

测试与常见问题

运行测试

点击Godot顶部工具栏的绿色三角「运行」按钮,进入游戏:

  • 按AWSD或方向键控制蓝色玩家移动
  • 鼠标左键点击任意位置发射红色子弹
  • 绿色敌人从屏幕上方随机生成,子弹碰到敌人后双方销毁,超出屏幕自动消失

常见问题解决

  • 无移动:检查脚本中move_speed为正数,Input映射未修改
  • 不发射子弹:确认Bullet.tscn已保存,Player脚本preload路径为「res://Bullet.tscn」
  • 敌人不生成:确认Enemy.tscn已保存,Spawner脚本enemy_scene路径正确
  • 无碰撞销毁:确认Bullet节点已连接body_entered信号,函数名正确为_on_body_entered

版权保护: 本文由 741卡盟 原创,转载请保留链接: http://741ka.com/gamenews/21621.html