godot-shooter / commit
Starting to add asteroids.
items/Asteroid.gd | 9 +++++++++ items/Asteroid.tscn | 17 +++++++++++++++++ project.godot | 6 ++++++ scenes/World.gd | 9 +++++++++ 4 files changed, 41 insertions(+) diff --git a/items/Asteroid.gd b/items/Asteroid.gd new file mode 100644 index 0000000..57959d1 --- /dev/null +++ b/items/Asteroid.gd @@ -0,0 +1,9 @@ +extends Node2D +class_name Asteroid + +export var spin_rate = .1 +export var velocity = Vector2.ZERO + +func _physics_process(delta: float) -> void: + self.rotation += spin_rate * delta + self.position += velocity * delta diff --git a/items/Asteroid.tscn b/items/Asteroid.tscn new file mode 100644 index 0000000..8f8d352 --- /dev/null +++ b/items/Asteroid.tscn @@ -0,0 +1,17 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://assets/kenney_simple-space/PNG/Retina/meteor_detailedLarge.png" type="Texture" id=1] +[ext_resource path="res://items/Asteroid.gd" type="Script" id=2] + +[node name="Asteroid" type="KinematicBody2D"] +script = ExtResource( 2 ) + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="."] +polygon = PoolVector2Array( 0, -48, 32, -32, 48, 0, 31, 32, 0, 48, -31, 33, -48, 0, -32, -31 ) + +[node name="Sprite" type="Sprite" parent="."] +texture = ExtResource( 1 ) + +[node name="NavigationObstacle2D" type="NavigationObstacle2D" parent="."] +estimate_radius = false +radius = 64.0 diff --git a/project.godot b/project.godot index 047d375..080a7ac 100644 --- a/project.godot +++ b/project.godot @@ -9,6 +9,11 @@ config_version=4 _global_script_classes=[ { +"base": "Node2D", +"class": "Asteroid", +"language": "GDScript", +"path": "res://items/Asteroid.gd" +}, { "base": "Area2D", "class": "Bullet", "language": "GDScript", @@ -65,6 +70,7 @@ _global_script_classes=[ { "path": "res://weapons/Weapon.gd" } ] _global_script_class_icons={ +"Asteroid": "", "Bullet": "", "ConstantItemGenerator": "", "Damage": "", diff --git a/scenes/World.gd b/scenes/World.gd index 6973ae3..e29c720 100644 --- a/scenes/World.gd +++ b/scenes/World.gd @@ -2,6 +2,7 @@ extends Node2D const Enemy = preload("res://actors/Enemy.tscn") const Bomb = preload("res://weapons/Bomb.tscn") +const Asteroid = preload("res://items/Asteroid.tscn") const Utils = preload("res://utils/Utils.gd") const Weapons = preload("res://weapons/Weapons.gd") @@ -18,6 +19,7 @@ var generators = [ ConstantItemGenerator.new("create_weapon", self, "weapon", 10), ConstantItemGenerator.new("create_bomb", self, "bombs", 10), LevelItemGenerator.new(5, "create_gold", self, "gold", 5), + ConstantItemGenerator.new("create_asteroid", self, "asteroids", 10), ] var completed_objectives = 0 var max_objectives = 5 @@ -96,6 +98,13 @@ func create_weapon() -> PowerUp: weapon.label = "LZR" weapon.color = Color.pink return weapon +func create_asteroid() -> Asteroid: + var asteroid: Asteroid = Asteroid.instance() + asteroid.position = get_new_environment_position(randf() * 2) + asteroid.spin_rate = randf() * 2 - 1 + asteroid.scale *= (randf() * .5 + .75) +# asteroid.velocity = Vector2.UP.rotated(randf() * PI * 2) * randf() * 30 + return asteroid func get_new_item_pos(dist_ratio: float = 1.0) -> Vector2: var pos_angle = randi() % 360