Untitled

mail@pastecode.io avatar
unknown
plain_text
a month ago
1.6 kB
7
Indexable
Never
extends RigidBody2D

const running_speed = 125
const jumping_impulse = 600
const jumping_cooldown = 0.25
const freeze_radius = 60
const freeze_cooldown = 30
const freeze_duration = 15

var sprite: AnimatedSprite2D;

var platforms_touching = []
var jumping_time = 0
var health = 100
var freeze_position = null
var last_freeze_time = 0

func ability_freeze():
	if Time.get_unix_time_from_system() - last_freeze_time < freeze_cooldown:
		return
	
	freeze_position = self.position
	
	last_freeze_time = Time.get_unix_time_from_system()

func _ready():
	self.sprite = self.get_node("AnimatedSprite2D")
	self.sprite.animation = "running"
	self.sprite.play()

func _physics_process(delta):
	if jumping_time < jumping_cooldown:
		jumping_time += delta
	else:
		jumping_time = jumping_cooldown
	if Input.is_key_pressed(KEY_RIGHT) or Input.is_key_pressed(KEY_D):
		self.linear_velocity.x = running_speed
	elif Input.is_key_pressed(KEY_LEFT) or Input.is_key_pressed(KEY_A):
		self.linear_velocity.x = -running_speed
	if self.platforms_touching.size() >= 1 and jumping_time == jumping_cooldown:
		if Input.is_key_pressed(KEY_UP) or Input.is_key_pressed(KEY_W):
			self.apply_impulse(Vector2(0, -jumping_impulse))
			jumping_time = 0
			

func _on_area_2d_body_entered(body):
	if !platforms_touching.has(body) and (body.is_in_group("platforms") or body.is_in_group("moving") or body.is_in_group("teleportation") or body.is_in_group("floors")) and body.position.y > self.position.y:
		self.platforms_touching.append(body)

func _on_area_2d_body_exited(body):
	self.platforms_touching.erase(body)
Leave a Comment