4.8 Jump Pad

This commit is contained in:
siyahas 2024-11-02 09:50:32 +03:00
parent 6cbcbe743c
commit 24fc7c2a82
4 changed files with 123 additions and 3 deletions

96
scenes/jump_pad.tscn Normal file
View file

@ -0,0 +1,96 @@
[gd_scene load_steps=14 format=3 uid="uid://dfrcbemxybvbj"]
[ext_resource type="Script" path="res://scripts/jump_pad.gd" id="1_kafhd"]
[ext_resource type="Texture2D" uid="uid://2su0kid2txul" path="res://assets/textures/other/Idle.png" id="2_1m2vt"]
[ext_resource type="Texture2D" uid="uid://cyy3gs64gm38x" path="res://assets/textures/other/Jump (28x28).png" id="3_vi0gn"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_pekj0"]
size = Vector2(20, 4)
[sub_resource type="AtlasTexture" id="AtlasTexture_xbhp4"]
atlas = ExtResource("3_vi0gn")
region = Rect2(0, 0, 28, 28)
[sub_resource type="AtlasTexture" id="AtlasTexture_h5mcm"]
atlas = ExtResource("3_vi0gn")
region = Rect2(28, 0, 28, 28)
[sub_resource type="AtlasTexture" id="AtlasTexture_dpm0s"]
atlas = ExtResource("3_vi0gn")
region = Rect2(56, 0, 28, 28)
[sub_resource type="AtlasTexture" id="AtlasTexture_t5et8"]
atlas = ExtResource("3_vi0gn")
region = Rect2(84, 0, 28, 28)
[sub_resource type="AtlasTexture" id="AtlasTexture_w8iil"]
atlas = ExtResource("3_vi0gn")
region = Rect2(112, 0, 28, 28)
[sub_resource type="AtlasTexture" id="AtlasTexture_5w5io"]
atlas = ExtResource("3_vi0gn")
region = Rect2(140, 0, 28, 28)
[sub_resource type="AtlasTexture" id="AtlasTexture_qjntm"]
atlas = ExtResource("3_vi0gn")
region = Rect2(168, 0, 28, 28)
[sub_resource type="AtlasTexture" id="AtlasTexture_6oce2"]
atlas = ExtResource("3_vi0gn")
region = Rect2(196, 0, 28, 28)
[sub_resource type="SpriteFrames" id="SpriteFrames_fsh0p"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": ExtResource("2_1m2vt")
}],
"loop": true,
"name": &"idle",
"speed": 20.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_xbhp4")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_h5mcm")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_dpm0s")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_t5et8")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_w8iil")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_5w5io")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_qjntm")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_6oce2")
}],
"loop": false,
"name": &"jump",
"speed": 20.0
}]
[node name="JumpPad" type="Area2D"]
collision_mask = 2
script = ExtResource("1_kafhd")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2(0, -10)
shape = SubResource("RectangleShape2D_pekj0")
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
position = Vector2(0, -14)
sprite_frames = SubResource("SpriteFrames_fsh0p")
animation = &"jump"
autoplay = "idle"
[connection signal="body_entered" from="." to="." method="_on_body_entered"]

View file

@ -1,7 +1,8 @@
[gd_scene load_steps=10 format=3 uid="uid://cchf5vmjp6ahj"] [gd_scene load_steps=11 format=3 uid="uid://cchf5vmjp6ahj"]
[ext_resource type="Script" path="res://scripts/level.gd" id="1_84g5v"] [ext_resource type="Script" path="res://scripts/level.gd" id="1_84g5v"]
[ext_resource type="PackedScene" uid="uid://c7y3ileam1twx" path="res://scenes/player.tscn" id="2_d65cs"] [ext_resource type="PackedScene" uid="uid://c7y3ileam1twx" path="res://scenes/player.tscn" id="2_d65cs"]
[ext_resource type="PackedScene" uid="uid://dfrcbemxybvbj" path="res://scenes/jump_pad.tscn" id="3_vhvgl"]
[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_mvbjk"] [sub_resource type="PhysicsMaterial" id="PhysicsMaterial_mvbjk"]
@ -58,4 +59,11 @@ texture = SubResource("GradientTexture1D_y3q5v")
[node name="StartPosition" type="Marker2D" parent="."] [node name="StartPosition" type="Marker2D" parent="."]
position = Vector2(309, 135) position = Vector2(309, 135)
[node name="JumpPad" parent="." instance=ExtResource("3_vhvgl")]
position = Vector2(338, 194)
[node name="JumpPad2" parent="." instance=ExtResource("3_vhvgl")]
position = Vector2(140, 194)
jump_force = 500
[connection signal="body_entered" from="Deathzone" to="." method="_on_death_zone_body_entered"] [connection signal="body_entered" from="Deathzone" to="." method="_on_death_zone_body_entered"]

11
scripts/jump_pad.gd Normal file
View file

@ -0,0 +1,11 @@
extends Area2D
@export var jump_force = 400
@onready var animated_sprite_2d: AnimatedSprite2D = $AnimatedSprite2D
func _on_body_entered(body: Node2D) -> void:
if body is Player:
animated_sprite_2d.play("jump")
body.jump(jump_force)
pass # Replace with function body.

View file

@ -1,8 +1,9 @@
extends CharacterBody2D extends CharacterBody2D
class_name Player
@export var speed = 300.0 @export var speed = 300.0
@export var jump_velocity = 400.0 @export var jump_force = 400.0
@onready var animated_sprite_2d: AnimatedSprite2D = $AnimatedSprite2D @onready var animated_sprite_2d: AnimatedSprite2D = $AnimatedSprite2D
@ -14,7 +15,7 @@ func _physics_process(delta: float) -> void:
# Handle jump. # Handle jump.
if Input.is_action_just_pressed("jump") and is_on_floor(): if Input.is_action_just_pressed("jump") and is_on_floor():
velocity.y = -jump_velocity jump(jump_force)
# Get the input direction and handle the movement/deceleration. # Get the input direction and handle the movement/deceleration.
var direction := Input.get_axis("move_left", "move_right") var direction := Input.get_axis("move_left", "move_right")
@ -39,3 +40,7 @@ func play_animations(direction: float):
else: else:
animated_sprite_2d.play("fall") animated_sprite_2d.play("fall")
pass pass
func jump(jump_force: float):
velocity.y = -jump_force