6 Commits

Author SHA1 Message Date
6dd20aff97 merged changes to main, didn't test thoroughly just skimmed hopefully it works :P 2026-03-08 19:48:00 -07:00
894f77e3cd Cleanup
Cleaning up the messy sections of my code and making the debug console output easier to read
2026-03-04 13:11:51 -08:00
bbda9768a2 Fixed projectile rotation
Fixed minor visual glitch where projectiles wouldn't be at the correct rotation after being deflected
2026-03-03 17:04:12 -08:00
ebff6dfa3e Projectiles+bounce
I hate github desktop oh my god just let me create a new branch

i gave up on creating a new branch

It wont let me move to a new branch cause it thinks there are conflicts. what the fuck is the point of that

It may say that there are conflicting files. push them through anyways, git is tweaking. I tested it myself, and the last commit to main was also from me so there's nothing to be conflicting with
2026-03-02 02:19:20 -08:00
4e127b091c Merge pull request 'enemy+wraparound' (#2) from enemy+wraparound into main
Reviewed-on: #2
2026-02-16 23:49:24 -08:00
d3eac34147 Merge pull request 'added mouse look and added a depressed elmo png for later' (#1) from Mouse-Look into main
Reviewed-on: #1
2026-02-16 23:47:46 -08:00
12 changed files with 180 additions and 41 deletions

View File

@@ -1,12 +1,14 @@
[gd_scene format=3 uid="uid://db1oeukux1376"]
[ext_resource type="Texture2D" uid="uid://xg0mu5mtpcgo" path="res://Assets/PlaceHolders/BuffMonk.png" id="1_g6sln"]
[ext_resource type="Script" uid="uid://dm8ytxk67ejef" path="res://Scenes/enemy_1.gd" id="1_s7od6"]
[ext_resource type="Script" uid="uid://d34snqiuscbv8" path="res://Scenes/enemy_1.gd" id="1_s7od6"]
[ext_resource type="PackedScene" uid="uid://b3ngjk0lkeemd" path="res://Scenes/Projectile_1.tscn" id="2_n3m8v"]
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_g6sln"]
[node name="Enemy1" type="CharacterBody2D" unique_id=1765361359]
script = ExtResource("1_s7od6")
Projectile = ExtResource("2_n3m8v")
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=93765061]
position = Vector2(22, -29)

View File

@@ -0,0 +1,26 @@
extends Node2D
const speed = 200
@onready var player: CharacterBody2D = get_tree().get_first_node_in_group("player")
var direction = Vector2.RIGHT
#var debug_normal: Vector2 = Vector2.ZERO
func _ready() -> void:
direction = (player.global_position - global_position).normalized()
global_rotation=direction.angle()
func _process(delta: float) -> void:
position += direction * speed * delta
func get_facing_direction():
var direction_vector = Vector2.from_angle(rotation)
return direction_vector
func changeDirection(normal: Vector2):
direction = normal
rotation = direction.angle()
# Debug function
func _draw():
# draw_line(Vector2(1,0) * 1000, debug_normal * 50, Color.RED, 2.0)
pass

View File

@@ -0,0 +1 @@
uid://bxqq5rcm0twuk

View File

@@ -0,0 +1,34 @@
[gd_scene format=3 uid="uid://b3ngjk0lkeemd"]
[ext_resource type="Texture2D" uid="uid://bsjn11wcewgya" path="res://Assets/PlaceHolders/Blob.png" id="1_1rre0"]
[ext_resource type="Script" uid="uid://bxqq5rcm0twuk" path="res://Scenes/Projectile_1.gd" id="1_lrei0"]
[sub_resource type="GDScript" id="GDScript_4ipem"]
script/source = "extends Area2D
# Called when the node enters the scene tree for the first time.
#func _ready() -> void:
# pass # Replace with function body.
"
[sub_resource type="CircleShape2D" id="CircleShape2D_v0834"]
[node name="Projectile1" type="Node2D" unique_id=1531719161]
script = ExtResource("1_lrei0")
[node name="Area2D" type="Area2D" parent="." unique_id=1629546418 groups=["Projectiles"]]
collision_layer = 2
collision_mask = 2
script = SubResource("GDScript_4ipem")
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D" unique_id=286593893]
scale = Vector2(1.1, 1.1)
shape = SubResource("CircleShape2D_v0834")
[node name="Sprite2D" type="Sprite2D" parent="Area2D" unique_id=1983633174]
position = Vector2(-0.9999995, 1)
scale = Vector2(0.17, 0.17)
texture = ExtResource("1_1rre0")

View File

@@ -24,15 +24,17 @@ var dir: Vector2
var knockback = 200
var current_state = States.IDLE
@onready var player: CharacterBody2D = get_tree().get_first_node_in_group("player")
@export var Projectile: PackedScene
func _on_timer_timeout() -> void:
$DirectionTimer.wait_time = chose([1,2,3])
if current_state !=States.CHASE:
dir = chose([Vector2.RIGHT, Vector2.LEFT])
var newProjectile = Projectile.instantiate() as Node2D
newProjectile.global_position=global_position
# newProjectile.global_rotation=global_rotation
get_tree().current_scene.add_child(newProjectile)
func chose(array):
array.shuffle()
@@ -41,39 +43,12 @@ func chose(array):
func wraparound():
var direction = global_position.direction_to(player.global_position)
global_position += direction * max_distance*2
func _process(delta: float) -> void:
look_at(player.global_position)
print(player.global_position)
#print(player.global_position)
var distance = global_position.distance_to(player.global_position)
if distance>max_distance:
wraparound()
"""
if (global_position.x-player.global_position.x)>600:#player to the right
global_position.x=player.global_position.x-600#move right
elif(global_position.x-player.global_position.x)<-600:#player to the left
global_position.x=player.global_position.x+600#move left
if (global_position.y-player.global_position.y)>600:#player to the up
global_position.y=player.global_position.y-600#move up
elif(global_position.y-player.global_position.y)<-600:#player to the down
global_position.y=player.global_position.y+600#move down
"""
"""
func _physics_process(delta: float) -> void:
# Add the gravity.
if not is_on_floor():
velocity += get_gravity() * delta
# Get the input direction and handle the movement/deceleration.
# As good practice, you should replace UI actions with custom gameplay actions.
var direction := Input.get_axis("ui_left", "ui_right")
if direction:
velocity.x = direction * SPEED
else:
velocity.x = move_toward(velocity.x, 0, SPEED)
move_and_slide()
"""

View File

@@ -1 +1 @@
uid://dm8ytxk67ejef
uid://d34snqiuscbv8

View File

@@ -17,7 +17,8 @@ func _process(_delta: float) -> void:
move_and_slide()
# look_at(get_global_mouse_position()) #uncompensated mouse control
var angle_to_mouse = get_angle_to(get_global_mouse_position())
rotation += angle_to_mouse + deg_to_rad(90) #+90 to makes top of image face mouse, not side
look_at(get_global_mouse_position())
#OLD: used when player shield direction aigned 90 deg off from front
# var angle_to_mouse = get_angle_to(get_global_mouse_position())
# rotation += angle_to_mouse# + deg_to_rad(90) #+90 to makes top of image face mouse, not side

View File

@@ -3,6 +3,7 @@
[ext_resource type="Script" uid="uid://bah031ailk0ha" path="res://Scenes/player.gd" id="1_cvnsp"]
[ext_resource type="Texture2D" uid="uid://g0m835iol4mp" path="res://Assets/PlaceHolders/Screenshot 2024-11-24 210808.png" id="1_v0iea"]
[ext_resource type="Texture2D" uid="uid://bcmuqd6p3jhdw" path="res://Assets/PlaceHolders/Elmo.png" id="3_6t5aa"]
[ext_resource type="Script" uid="uid://b7vgyn15fioeu" path="res://Scenes/shield_hitbox.gd" id="4_vgqql"]
[sub_resource type="CircleShape2D" id="CircleShape2D_v0iea"]
@@ -20,13 +21,21 @@ scale = Vector2(4.2653956, 4.2653956)
shape = SubResource("CircleShape2D_v0iea")
[node name="Shield" type="Sprite2D" parent="." unique_id=212386399]
position = Vector2(0, -50)
rotation = 1.5707964
position = Vector2(50, 0)
scale = Vector2(0.15, 0.15)
texture = ExtResource("3_6t5aa")
[node name="ShieldColision" type="CollisionShape2D" parent="." unique_id=948717563]
position = Vector2(0, -50)
rotation = 1.5707964
position = Vector2(50, 0)
scale = Vector2(2.5, 6)
shape = SubResource("RectangleShape2D_6t5aa")
[node name="ShieldHitbox" type="Area2D" parent="." unique_id=2121529100]
collision_layer = 2
collision_mask = 2
script = ExtResource("4_vgqql")
[node name="ShieldHitboxCol" type="CollisionShape2D" parent="ShieldHitbox" unique_id=1829894325]
position = Vector2(50, 0)
scale = Vector2(2.5, 6)
shape = SubResource("RectangleShape2D_6t5aa")

View File

@@ -0,0 +1,32 @@
extends Area2D
var debug_normal: Vector2 = Vector2.ZERO
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
area_entered.connect(_on_area_entered)
func _on_area_entered(area):
if area.is_in_group("Projectiles"):
print("Event: Projectile hit shield")
var shield_normal = global_transform.x.normalized()
print("Readout: Shield normal: ", Vec2str(shield_normal))
# Gets the direction from the parent Node2D NOT the Area2d component
var projectile_velocity = area.get_parent().get_facing_direction()
print("Readout: Projectile dir: ", Vec2str(projectile_velocity))
var bounceTrajectory = projectile_velocity.bounce(shield_normal)
print("Readout: Bounce dir: ", Vec2str(bounceTrajectory))
if area.get_parent().has_method("changeDirection"):
area.get_parent().changeDirection(bounceTrajectory)
# Debug functions
func _draw():
# draw_line(Vector2(1,0) * 1000, debug_normal * 50, Color.RED, 2.0) # normal
pass
# Makes the string a bit easier to read in debug console
func Vec2str(vec: Vector2) -> String:
var x_sign = " " if vec.x >= 0 else ""
var y_sign = " " if vec.y >= 0 else ""
return "(%s%.2f, %s%.2f)" % [x_sign, vec.x, y_sign, vec.y]

View File

@@ -0,0 +1 @@
uid://b7vgyn15fioeu

View File

@@ -18,6 +18,7 @@ config/icon="res://icon.svg"
[global_group]
player="Making this for an easy reference to the player in the enemies code"
Projectiles="Tell if the object is a projectile or not"
[input]

View File

@@ -12,3 +12,60 @@ Done
Current imported assests:
https://screamingbrainstudios.itch.io/tiny-texture-pack
x1*x2+y1*y2
along normal speedx*sp
var proje_normal = global_transform.x.normalized()
#proje_normal.y = -proje_normal.y
print("Proje Normal: ", proje_normal)
var speed_perp: float = proje_normal.dot(normal)
var perp_line: Vector2 = Vector2(normal.y,-normal.x)
var speed_para: float = proje_normal.dot(perp_line)
print("speed perp: ", speed_perp)
print("speed para: ", speed_para)
# this is just to check my math
# should be aproximately 1 (there will be some bit depth precision errors)
print("speed hype: ", speed_para*speed_para + speed_perp*speed_perp)
var newDirection: Vector2 = Vector2(
(speed_perp * normal.x) + (speed_para * normal.y),
(speed_perp * normal.y) + (speed_para *-normal.x))
var projectile_velocity = area.get_parent().get_facing_direction()
print("projectile speed......................", projectile_velocity)
var shield_normal = global_transform.x.normalized()
print("Shield Normal: ", shield_normal)
#shield_normal.y = -shield_normal.y
# if abs(projectile_velocity.y)>abs(projectile_velocity.x):
# shield_normal = global_transform.y.normalized()
#shield_normal.y = -shield_normal.y
#shield_normal.x = -shield_normal.x
# var shield_perp = Vector2(shield_normal.y,-shield_normal.x)
# if area.has_method("bounce"):
# if projectile_velocity.dot(shield_perp) < 0:
# area.bounce(shield_normal)
if area.has_method("bounce"):
#if projectile_velocity.dot(shield_normal) < 0:
area.bounce(shield_normal)