Untitled
unknown
plain_text
a year ago
1.6 kB
12
Indexable
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)
Editor is loading...
Leave a Comment