Player's almost done. So is bullet. Enemy up next!
|
@ -1,22 +0,0 @@
|
||||||
[gd_scene load_steps=3 format=3 uid="uid://do4a4d3u60iy1"]
|
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://d07qtvmhqjjts" path="res://non-godot/Textures/Bullet.png" id="2_xbn07"]
|
|
||||||
[ext_resource type="AudioStream" uid="uid://b4r0manp60hb4" path="res://non-godot/Sound/HitHurt.ogg" id="3_qwtek"]
|
|
||||||
|
|
||||||
[node name="Bullet" type="Bullet" groups=["Bullet"]]
|
|
||||||
Direction = Vector2(1, 0)
|
|
||||||
gravity_scale = 0.0
|
|
||||||
lock_rotation = true
|
|
||||||
contact_monitor = true
|
|
||||||
max_contacts_reported = 1
|
|
||||||
|
|
||||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
|
||||||
position = Vector2(1.42109e-14, 1)
|
|
||||||
scale = Vector2(0.034, 0.034)
|
|
||||||
texture = ExtResource("2_xbn07")
|
|
||||||
|
|
||||||
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
|
|
||||||
stream = ExtResource("3_qwtek")
|
|
||||||
volume_db = -5.0
|
|
||||||
|
|
||||||
[connection signal="body_entered" from="." to="." method="_on_body_entered"]
|
|
|
@ -1,7 +1,7 @@
|
||||||
[gd_scene load_steps=14 format=3 uid="uid://bki7jjuvugscj"]
|
[gd_scene load_steps=14 format=3 uid="uid://bki7jjuvugscj"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://csmqifafakbu4" path="res://godot/Scripts/enemy.gd" id="1_oyq4s"]
|
[ext_resource type="Script" uid="uid://csmqifafakbu4" path="res://godot/Scripts/enemy.gd" id="1_oyq4s"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dq1pnq3g34tay" path="res://godot/Scenes/Bullets/enemy_bullet.tscn" id="2_w428l"]
|
[ext_resource type="PackedScene" uid="uid://dq1pnq3g34tay" path="res://godot/Scenes/enemy_bullet.tscn" id="2_w428l"]
|
||||||
[ext_resource type="Texture2D" uid="uid://b2res51c25avx" path="res://non-godot/Textures/Whale/Whale 1.png" id="3_rlx0w"]
|
[ext_resource type="Texture2D" uid="uid://b2res51c25avx" path="res://non-godot/Textures/Whale/Whale 1.png" id="3_rlx0w"]
|
||||||
[ext_resource type="Texture2D" uid="uid://s3ici4urgkpp" path="res://non-godot/Textures/Whale/Whale 2.png" id="4_nq1if"]
|
[ext_resource type="Texture2D" uid="uid://s3ici4urgkpp" path="res://non-godot/Textures/Whale/Whale 2.png" id="4_nq1if"]
|
||||||
[ext_resource type="Texture2D" uid="uid://xvmxbxost161" path="res://non-godot/Textures/Whale/Whale 3.png" id="5_vayue"]
|
[ext_resource type="Texture2D" uid="uid://xvmxbxost161" path="res://non-godot/Textures/Whale/Whale 3.png" id="5_vayue"]
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
[gd_scene load_steps=10 format=3 uid="uid://bjbccem28ir8r"]
|
[gd_scene load_steps=10 format=3 uid="uid://bjbccem28ir8r"]
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://bcbjh2amre7ke" path="res://non-godot/Textures/Plane/PlaneUp.png" id="1_2h3i0"]
|
[ext_resource type="Texture2D" uid="uid://bcbjh2amre7ke" path="res://non-godot/Textures/Plane/PlaneUp.png" id="1_2h3i0"]
|
||||||
[ext_resource type="PackedScene" uid="uid://do4a4d3u60iy1" path="res://godot/Scenes/Bullets/bullet.tscn" id="1_edjcf"]
|
[ext_resource type="Texture2D" uid="uid://d07qtvmhqjjts" path="res://non-godot/Textures/Bullet.png" id="1_ppa05"]
|
||||||
[ext_resource type="Texture2D" uid="uid://c5kt81t5h4vgn" path="res://non-godot/Textures/Plane/Plane.png" id="3_5g2vf"]
|
[ext_resource type="Texture2D" uid="uid://c5kt81t5h4vgn" path="res://non-godot/Textures/Plane/Plane.png" id="3_5g2vf"]
|
||||||
[ext_resource type="Texture2D" uid="uid://bff4pkabs2ecf" path="res://non-godot/Textures/Plane/PlaneDown.png" id="3_edjcf"]
|
[ext_resource type="Texture2D" uid="uid://bff4pkabs2ecf" path="res://non-godot/Textures/Plane/PlaneDown.png" id="3_edjcf"]
|
||||||
|
|
||||||
|
@ -148,8 +148,8 @@ _data = {
|
||||||
}
|
}
|
||||||
|
|
||||||
[node name="Player" type="Player" groups=["Player"]]
|
[node name="Player" type="Player" groups=["Player"]]
|
||||||
ShotBulletLocation = Vector2(100, 100)
|
ShotBulletLocation = Vector2(95, 45)
|
||||||
ShotBullet = ExtResource("1_edjcf")
|
ShotBulletTexture = ExtResource("1_ppa05")
|
||||||
PlayerUp = ExtResource("1_2h3i0")
|
PlayerUp = ExtResource("1_2h3i0")
|
||||||
PlayerNeutral = ExtResource("3_5g2vf")
|
PlayerNeutral = ExtResource("3_5g2vf")
|
||||||
PlayerDown = ExtResource("3_edjcf")
|
PlayerDown = ExtResource("3_edjcf")
|
||||||
|
@ -159,7 +159,6 @@ InputRight = &"Right"
|
||||||
InputDown = &"Down"
|
InputDown = &"Down"
|
||||||
InputShoot = &"Shoot"
|
InputShoot = &"Shoot"
|
||||||
InputSpeedUp = &"SpeedUp"
|
InputSpeedUp = &"SpeedUp"
|
||||||
scale = Vector2(0.15, 0.15)
|
|
||||||
motion_mode = 1
|
motion_mode = 1
|
||||||
|
|
||||||
[node name="GPUParticles2D2" type="GPUParticles2D" parent="."]
|
[node name="GPUParticles2D2" type="GPUParticles2D" parent="."]
|
||||||
|
|
|
@ -23,6 +23,7 @@ func _on_body_entered(body: Node) -> void:
|
||||||
self.collision_layer = 0b0000
|
self.collision_layer = 0b0000
|
||||||
self.collision_mask = 0b0000
|
self.collision_mask = 0b0000
|
||||||
self.visible = false
|
self.visible = false
|
||||||
|
get_node("");
|
||||||
# for the player
|
# for the player
|
||||||
elif !body.is_in_group("Bullet") and EnemyBullet == true and body.is_in_group("Player"):
|
elif !body.is_in_group("Bullet") and EnemyBullet == true and body.is_in_group("Player"):
|
||||||
body.TakeDamage()
|
body.TakeDamage()
|
||||||
|
|
Before Width: | Height: | Size: 217 KiB After Width: | Height: | Size: 788 B |
Before Width: | Height: | Size: 530 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 544 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 492 KiB After Width: | Height: | Size: 12 KiB |
|
@ -5,17 +5,16 @@
|
||||||
#include <godot_cpp/core/memory.hpp>
|
#include <godot_cpp/core/memory.hpp>
|
||||||
#include <godot_cpp/classes/engine.hpp>
|
#include <godot_cpp/classes/engine.hpp>
|
||||||
|
|
||||||
#include <godot_cpp/classes/collision_shape2d.hpp>
|
|
||||||
#include <godot_cpp/classes/rectangle_shape2d.hpp>
|
|
||||||
|
|
||||||
namespace godot {
|
namespace godot {
|
||||||
Bullet::Bullet() {
|
Bullet::Bullet() {
|
||||||
Sprite = memnew(Sprite2D);
|
Sprite = memnew(Sprite2D);
|
||||||
CollisionShape2D* Collision = memnew(CollisionShape2D);
|
Collision = memnew(CollisionShape2D);
|
||||||
RectangleShape2D* CollisionShape = memnew(RectangleShape2D);
|
CollisionShape = memnew(RectangleShape2D);
|
||||||
|
|
||||||
Collision->set_shape(CollisionShape);
|
Collision->set_shape(CollisionShape);
|
||||||
|
|
||||||
|
set_lock_rotation_enabled(true);
|
||||||
|
|
||||||
add_child(Sprite);
|
add_child(Sprite);
|
||||||
add_child(Collision);
|
add_child(Collision);
|
||||||
}
|
}
|
||||||
|
@ -31,6 +30,9 @@ namespace godot {
|
||||||
ClassDB::bind_method(D_METHOD("GetDirection"), &Bullet::GetDirection);
|
ClassDB::bind_method(D_METHOD("GetDirection"), &Bullet::GetDirection);
|
||||||
ClassDB::bind_method(D_METHOD("SetDirection", "Direction"), &Bullet::SetDirection);
|
ClassDB::bind_method(D_METHOD("SetDirection", "Direction"), &Bullet::SetDirection);
|
||||||
ClassDB::add_property("Bullet", PropertyInfo(Variant::VECTOR2, "Direction"), "SetDirection", "GetDirection");
|
ClassDB::add_property("Bullet", PropertyInfo(Variant::VECTOR2, "Direction"), "SetDirection", "GetDirection");
|
||||||
|
ClassDB::bind_method(D_METHOD("GetTexture"), &Bullet::GetTexture);
|
||||||
|
ClassDB::bind_method(D_METHOD("SetTexture", "Texture"), &Bullet::SetTexture);
|
||||||
|
ClassDB::add_property("Bullet", PropertyInfo(Variant::OBJECT, "Texture"), "SetTexture", "GetTexture");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Bullet::_integrate_forces(PhysicsDirectBodyState2D* state) {
|
void Bullet::_integrate_forces(PhysicsDirectBodyState2D* state) {
|
||||||
|
@ -46,6 +48,8 @@ namespace godot {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Bullet::_physics_process(double delta) {
|
void Bullet::_physics_process(double delta) {
|
||||||
|
CollisionShape->set_size(Vector2(Texture->get_width(), Texture->get_height()));
|
||||||
|
|
||||||
if (Engine::get_singleton()->is_editor_hint()) {
|
if (Engine::get_singleton()->is_editor_hint()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -62,6 +66,9 @@ namespace godot {
|
||||||
Vector2 Bullet::GetDirection() const {
|
Vector2 Bullet::GetDirection() const {
|
||||||
return Direction;
|
return Direction;
|
||||||
}
|
}
|
||||||
|
Ref<CompressedTexture2D> Bullet::GetTexture() const {
|
||||||
|
return Texture;
|
||||||
|
}
|
||||||
|
|
||||||
void Bullet::SetSpeed(const int speed) {
|
void Bullet::SetSpeed(const int speed) {
|
||||||
Speed = speed;
|
Speed = speed;
|
||||||
|
@ -69,4 +76,8 @@ namespace godot {
|
||||||
void Bullet::SetDirection(const Vector2 direction) {
|
void Bullet::SetDirection(const Vector2 direction) {
|
||||||
Direction = direction;
|
Direction = direction;
|
||||||
}
|
}
|
||||||
|
void Bullet::SetTexture(const Ref<CompressedTexture2D>& texture) {
|
||||||
|
Texture = texture;
|
||||||
|
Sprite->set_texture(texture);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -4,19 +4,25 @@
|
||||||
#include <godot_cpp/classes/rigid_body2d.hpp>
|
#include <godot_cpp/classes/rigid_body2d.hpp>
|
||||||
#include <godot_cpp/classes/physics_direct_body_state2d.hpp>
|
#include <godot_cpp/classes/physics_direct_body_state2d.hpp>
|
||||||
#include <godot_cpp/classes/sprite2d.hpp>
|
#include <godot_cpp/classes/sprite2d.hpp>
|
||||||
|
#include <godot_cpp/classes/compressed_texture2d.hpp>
|
||||||
|
#include <godot_cpp/classes/collision_shape2d.hpp>
|
||||||
|
#include <godot_cpp/classes/rectangle_shape2d.hpp>
|
||||||
|
|
||||||
namespace godot {
|
namespace godot {
|
||||||
class Bullet : public RigidBody2D {
|
class Bullet : public RigidBody2D {
|
||||||
GDCLASS(Bullet, RigidBody2D)
|
GDCLASS(Bullet, RigidBody2D)
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int Speed = 1200;
|
int Speed = 1500;
|
||||||
Vector2 Direction;
|
Vector2 Direction;
|
||||||
|
Ref<CompressedTexture2D> Texture;
|
||||||
double DespawnTime = 5;
|
double DespawnTime = 5;
|
||||||
double DespawnTimer = 0;
|
double DespawnTimer = 0;
|
||||||
|
|
||||||
// Nodes
|
// Nodes
|
||||||
Sprite2D* Sprite;
|
Sprite2D* Sprite;
|
||||||
|
CollisionShape2D* Collision;
|
||||||
|
RectangleShape2D* CollisionShape;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
static void _bind_methods();
|
static void _bind_methods();
|
||||||
|
@ -31,10 +37,11 @@ namespace godot {
|
||||||
// Getters and setters
|
// Getters and setters
|
||||||
int GetSpeed() const;
|
int GetSpeed() const;
|
||||||
Vector2 GetDirection() const;
|
Vector2 GetDirection() const;
|
||||||
|
Ref<CompressedTexture2D> GetTexture() const;
|
||||||
|
|
||||||
void SetSpeed(const int speed);
|
void SetSpeed(const int speed);
|
||||||
void SetDirection(const Vector2 direction);
|
void SetDirection(const Vector2 direction);
|
||||||
|
void SetTexture(const Ref<CompressedTexture2D>& texture);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -124,6 +124,9 @@ namespace godot {
|
||||||
if (Input::get_singleton()->get_action_raw_strength(Shoot) != 0) {
|
if (Input::get_singleton()->get_action_raw_strength(Shoot) != 0) {
|
||||||
Bullet* bullet = memnew(Bullet);
|
Bullet* bullet = memnew(Bullet);
|
||||||
bullet->set_position(BulletLocation + get_position());
|
bullet->set_position(BulletLocation + get_position());
|
||||||
|
bullet->SetTexture(BulletTexture);
|
||||||
|
bullet->SetDirection(Vector2(1, 0));
|
||||||
|
bullet->add_collision_exception_with(get_node<Player>(get_path()));
|
||||||
get_parent()->add_child(bullet);
|
get_parent()->add_child(bullet);
|
||||||
FireRateTimer = 0;
|
FireRateTimer = 0;
|
||||||
}
|
}
|
||||||
|
|