aboutsummaryrefslogtreecommitdiff
path: root/game/characters
diff options
context:
space:
mode:
authorAndrew Lee <alee14498@protonmail.com>2023-06-24 18:02:46 -0400
committerAndrew Lee <alee14498@protonmail.com>2023-06-24 23:46:57 -0400
commitdbb42c99e07320bc20d77cdbe404a8071c0a522e (patch)
tree9e3d4094061c800e52897bfaa117a3608c648f2a /game/characters
parent9541a472e0b38369d169ad3f7bb250a8127bc471 (diff)
downloadfrivolous-run-dbb42c99e07320bc20d77cdbe404a8071c0a522e.tar.gz
frivolous-run-dbb42c99e07320bc20d77cdbe404a8071c0a522e.tar.bz2
frivolous-run-dbb42c99e07320bc20d77cdbe404a8071c0a522e.zip
Ported game to Godot 4; Major changes
Diffstat (limited to 'game/characters')
-rw-r--r--game/characters/player/Player.gd60
-rw-r--r--game/characters/player/Player.tscn59
-rw-r--r--game/characters/victor/Victor.gd21
-rw-r--r--game/characters/victor/Victor.tscn29
4 files changed, 105 insertions, 64 deletions
diff --git a/game/characters/player/Player.gd b/game/characters/player/Player.gd
index 40d4148..862a0a1 100644
--- a/game/characters/player/Player.gd
+++ b/game/characters/player/Player.gd
@@ -1,36 +1,28 @@
-extends KinematicBody2D
-
-const UP = Vector2(0,-1)
-export var GRAVITY = 20
-export var MAXFALLSPEED = 200
-export var MAXSPEED = 80
-export var JUMPFORCE = 300
-export var ACCEL = 20
-
-var motion = Vector2()
-
-
-func _physics_process(_delta):
-
- motion.y += GRAVITY
-
- if motion.y > MAXFALLSPEED:
- motion.y = MAXFALLSPEED
-
- motion.x = clamp(motion.x,-MAXSPEED,MAXSPEED)
-
- if Input.is_action_pressed("left"):
- motion.x -= ACCEL
-
- elif Input.is_action_pressed("right"):
- motion.x += ACCEL
+extends CharacterBody2D
+
+
+@export var SPEED = 300.0
+var JUMP_VELOCITY = -400.0
+
+# Get the gravity from the project settings to be synced with RigidBody nodes.
+var gravity = ProjectSettings.get_setting("physics/2d/default_gravity")
+
+
+func _physics_process(delta):
+ # Add the gravity.
+ if not is_on_floor():
+ velocity.y += gravity * delta
+
+ # Handle Jump.
+ if Input.is_action_just_pressed("jump") and is_on_floor():
+ velocity.y = JUMP_VELOCITY
+
+ # 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("left", "right")
+ if direction:
+ velocity.x = direction * SPEED
else:
- motion.x = lerp(motion.x,0,0.2)
-
- if is_on_floor():
- if Input.is_action_just_pressed("jump"):
- motion.y = -JUMPFORCE
-
-
- motion = move_and_slide(motion,UP)
+ velocity.x = move_toward(velocity.x, 0, SPEED)
+ move_and_slide()
diff --git a/game/characters/player/Player.tscn b/game/characters/player/Player.tscn
index 3a3bba7..f1d831e 100644
--- a/game/characters/player/Player.tscn
+++ b/game/characters/player/Player.tscn
@@ -1,25 +1,50 @@
-[gd_scene load_steps=4 format=2]
+[gd_scene load_steps=4 format=3 uid="uid://l0lnby3rm6fj"]
-[ext_resource path="res://game/characters/player/Player.gd" type="Script" id=1]
-[ext_resource path="res://assets/images/white.png" type="Texture" id=2]
+[ext_resource type="Texture2D" uid="uid://d1gf8ked7ik4l" path="res://assets/images/white.png" id="2"]
-[sub_resource type="RectangleShape2D" id=1]
-extents = Vector2( 8, 8 )
+[sub_resource type="GDScript" id="GDScript_mix1s"]
+script/source = "extends CharacterBody2D
-[node name="Player" type="KinematicBody2D"]
-position = Vector2( 50, 600 )
-script = ExtResource( 1 )
-MAXSPEED = 200
-JUMPFORCE = 500
-ACCEL = 100
+const JUMP_VELOCITY = -500.0
-[node name="Sprite" type="Sprite" parent="."]
-texture = ExtResource( 2 )
+# Get the gravity from the project settings to be synced with RigidBody nodes.
+var gravity = ProjectSettings.get_setting(\"physics/2d/default_gravity\")
+
+
+func _physics_process(delta):
+ # Add the gravity.
+ if not is_on_floor():
+ velocity.y += gravity * delta
+
+ # Handle Jump.
+ if Input.is_action_just_pressed(\"ui_accept\") and is_on_floor():
+ velocity.y = JUMP_VELOCITY
+
+ # Get the input direction and handle the movement/deceleration.
+ # As good practice, you should replace UI actions with custom gameplay actions.
+ velocity.x = 1 * Stats.initspeed
+ move_and_slide()
+
+ if Stats.playerdead == true:
+ queue_free()
+"
+
+[sub_resource type="RectangleShape2D" id="1"]
+size = Vector2(16, 16)
+
+[node name="Player" type="CharacterBody2D"]
+position = Vector2(50, 600)
+script = SubResource("GDScript_mix1s")
+
+[node name="Sprite2D" type="Sprite2D" parent="."]
+texture = ExtResource("2")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
-shape = SubResource( 1 )
+shape = SubResource("1")
[node name="Camera2D" type="Camera2D" parent="."]
-current = true
-zoom = Vector2( 0.5, 0.5 )
-smoothing_enabled = true
+zoom = Vector2(1.5, 1.5)
+limit_left = 0
+limit_top = 0
+position_smoothing_enabled = true
+position_smoothing_speed = 6.0
diff --git a/game/characters/victor/Victor.gd b/game/characters/victor/Victor.gd
index 7d8259f..725babe 100644
--- a/game/characters/victor/Victor.gd
+++ b/game/characters/victor/Victor.gd
@@ -1,7 +1,18 @@
-extends KinematicBody2D
+extends CharacterBody2D
-var speed = 100
-var velocity = Vector2(0, 0)
+var SPEED = 100
+var gravity = ProjectSettings.get_setting("physics/2d/default_gravity")
+var player
-func _physics_process(_delta):
- pass
+func _physics_process(delta):
+ velocity.y += gravity * delta
+ player = get_node("../Player")
+ var direction = (player.position - self.position).normalized()
+ velocity.x = direction.x * SPEED
+ move_and_slide()
+
+
+func _on_player_collision_body_entered(body):
+ if body.name == "Player":
+ print("Killed player")
+ Stats.playerdead == true
diff --git a/game/characters/victor/Victor.tscn b/game/characters/victor/Victor.tscn
index 1cd8f7a..ecfe876 100644
--- a/game/characters/victor/Victor.tscn
+++ b/game/characters/victor/Victor.tscn
@@ -1,14 +1,27 @@
-[gd_scene load_steps=3 format=2]
+[gd_scene load_steps=5 format=3 uid="uid://dfomf55bood4b"]
-[ext_resource path="res://assets/images/blue.png" type="Texture" id=1]
+[ext_resource type="Texture2D" uid="uid://cb2ak3trl37at" path="res://assets/images/blue.png" id="1"]
+[ext_resource type="Script" path="res://game/characters/victor/Victor.gd" id="1_gw1mn"]
-[sub_resource type="RectangleShape2D" id=1]
-extents = Vector2( 8, 8 )
+[sub_resource type="RectangleShape2D" id="1"]
+size = Vector2(16, 16)
-[node name="Victor" type="KinematicBody2D"]
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_sxbpr"]
+size = Vector2(18, 17)
-[node name="Sprite" type="Sprite" parent="."]
-texture = ExtResource( 1 )
+[node name="Victor" type="CharacterBody2D"]
+script = ExtResource("1_gw1mn")
+
+[node name="Sprite2D" type="Sprite2D" parent="."]
+texture = ExtResource("1")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
-shape = SubResource( 1 )
+shape = SubResource("1")
+
+[node name="PlayerCollision" type="Area2D" parent="."]
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="PlayerCollision"]
+position = Vector2(0, -0.5)
+shape = SubResource("RectangleShape2D_sxbpr")
+
+[connection signal="body_entered" from="PlayerCollision" to="." method="_on_player_collision_body_entered"]