fruit-jump/character_body_2d.gd
2025-02-10 17:23:36 +01:00

160 lines
3.0 KiB
GDScript

extends CharacterBody2D
var umhang = false
var speed = 80000
var schwerkraft = 600
var sprung = 600
var trampolin =1300
var aktueler_status
var trampolin2 =100000
var die_coldown = true
var state_machine
var liste =["klopapir","nutela","äpfel","birnen"]
enum anim_states { STEHEN,RESET}
var rendem =RandomNumberGenerator.new()
func _ready() -> void:
grün_rot_weis()
state_machine =$AnimationTree["parameters/playback"]
die_coldown == true
func grün_rot_weis():
liste.append("grün")
liste.append("rot")
liste.append("weis")
func _process(delta: float) -> void:
if umhang == true:
schwerkraft = 400
else:
schwerkraft = 600
func _physics_process(delta: float) -> void:
velocity.x = 0
for i in get_slide_collision_count():
var collision = get_slide_collision(i)
if collision.get_collider().name.find("ziel") == 0:
Globel.check_point_position =collision.get_collider().position
print(Globel.check_point_position)
if collision.get_collider().name.find("trampolin1") == 0:
velocity.y = -trampolin
if collision.get_collider().name.find("trampolin2") == 0:
velocity.y = +trampolin
if collision.get_collider().name.find("trampolin3") == 0:
velocity.x = -trampolin2
if collision.get_collider().name.find("trampolin4") == 0:
velocity.x = +trampolin2
if collision.get_collider().name.find("gefaren") == 0:
die()
if collision.get_collider().name.find("end_ziel") == 0:
get_tree().change_scene_to_file("2_level")
if Input.is_action_just_pressed("ui_down") and is_on_floor():
Globel.level+=1
get_tree().change_scene_to_file("res://level/" + str (Globel.level) + ".tscn")
if not is_on_floor():
speed=45000
if is_on_floor():
speed=80000
if position.y >= 2000:
die()
if not is_on_floor():
velocity.y += schwerkraft * delta
if Input.is_action_just_pressed("springen") and is_on_floor():
velocity.y = -sprung
$JumpSound.play()
set_state(anim_states.STEHEN)
if Input.is_action_pressed("ui_left"):
velocity.x -= speed *delta
set_state(anim_states.RESET)
if Input.is_action_pressed("ui_right"):
velocity.x += speed *delta
set_state(anim_states.RESET)
move_and_slide ()
func _on_area_2d_area_entered(area: Area2D) -> void:
if area.is_in_group ("Gegner"):
die ()
if area.is_in_group("tötung"):
velocity.y = -sprung
umhang = true
if area.is_in_group ("ziel"):
Globel.check_point_position =area.position
if area.is_in_group ("end_ziel"):
Globel.level+=1
get_tree().change_scene_to_file("res://level/" + str (Globel.level) + ".tscn")
func die():
Globel.leben = false
$Herunterladen.play()
position = Globel.check_point_position
print(Globel.check_point_position)
velocity.y=0
Globel.dieconter +=1
$Timer.start()
die_coldown = false
umhang = false
func set_state(state : anim_states) -> void:
if state == anim_states.RESET:
state_machine.travel ("RESET")
return
if state == anim_states.STEHEN:
state_machine.travel ("STEHEN")
func _on_timer_timeout() -> void:
die_coldown = true
Globel.leben = true