Loading...
Loading...
Compare original and translation side by side
NavigationRegion2D.bake_navigation_polygon()NavigationServer2D.get_maps()NavigationServer2D.map_get_path(start, goal)Area2D.get_overlapping_bodies()bodies_enteredbody_exited| Phase | Skills | Purpose |
|---|---|---|
| 1. Grid/Path | | Defining where enemies walk and towers build |
| 2. Towers | | Range checks, rotation, projectile prediction |
| 3. Enemies | | Movement along paths |
| 4. Management | | Wave spawning logic, game phases |
| 5. UI | | Building towers, inspecting stats |
NavigationRegion2D.bake_navigation_polygon()NavigationServer2D.get_maps()NavigationServer2D.map_get_path(start, goal)Area2D.get_overlapping_bodies()| 阶段 | 技术 | 用途 |
|---|---|---|
| 1. 网格/路径 | | 定义敌人行走路径和炮塔建造区域 |
| 2. 炮塔 | | 范围检测、炮塔旋转、弹道预测 |
| 3. 敌人 | | 沿路径移动 |
| 4. 管理模块 | | 波次生成逻辑、游戏阶段管理 |
| 5. 用户界面 | | 炮塔建造、属性查看 |
undefinedundefinedvar wave_data = waves[current_wave_index]
wave_started.emit(current_wave_index)
_spawn_wave(wave_data)
current_wave_index += 1undefinedvar wave_data = waves[current_wave_index]
wave_started.emit(current_wave_index)
_spawn_wave(wave_data)
current_wave_index += 1undefinedIdleAcquireTargetAttackCooldownFirstLastStrongestWeakestClosestundefinedIdleAcquireTargetAttackCooldownFirstLastStrongestWeakestClosestundefinedif current_target:
_rotate_turret(current_target.global_position)
if can_fire():
fire_projectile()undefinedif current_target:
_rotate_turret(current_target.global_position)
if can_fire():
fire_projectile()undefinedPath2DPathFollow2DPath2DPathFollow2DNavigationAgent2DNavigationRegion2DNavigationAgent2DNavigationRegion2Dfunc get_predicted_position(target: Node2D, projectile_speed: float) -> Vector2:
var to_target = target.global_position - global_position
var time_to_hit = to_target.length() / projectile_speed
return target.global_position + (target.velocity * time_to_hit)func get_predicted_position(target: Node2D, projectile_speed: float) -> Vector2:
var to_target = target.global_position - global_position
var time_to_hit = to_target.length() / projectile_speed
return target.global_position + (target.velocity * time_to_hit)NavigationServer2D.map_get_pathNavigationServer2D.map_get_pathmonitorable/monitoringPhysicsServer2Dmonitorable/monitoringPhysicsServer2D