A game created for the Godot Wild Jam #21
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
- extends KinematicBody2D
-
- export var degrees_per_second:float = 180.0
- export var ease_in:float = 0.2
- export var ease_out:float = 0.4
- export var active:bool = true setget _set_active
-
- var _easing_in = false
- var _easing_out = false
- var _easing = 0.0
- var _running = false
-
- var _volume_on = 0
- var _pitch_on = 1.0
-
-
- func _set_active(b):
- if active != b:
- if active:
- _easing_out = true
- _easing = ease_out
- else:
- _easing_in = true
- _easing = ease_in
- active = b
-
- # Called when the node enters the scene tree for the first time.
- func _ready():
- _volume_on = $audio.volume_db
- _pitch_on = $audio.pitch_scale
- set_physics_process(true)
- if active and _easing == 0.0:
- _running = true
-
- func _physics_process(delta):
- if _easing_in or _easing_out:
- _easing -= delta
- if _easing <= 0.0:
- _running = _easing_in
- _easing_in = false
- _easing_out = false
- _easing = 0.0
- if not _running:
- $audio.stop()
- $audio.volume_db = _volume_on
- $audio.pitch_scale = _pitch_on
- else:
- if not $audio.playing:
- $audio.play()
- var adj
- var vol
- if _easing_in:
- adj = 1.0 - (_easing / ease_in)
- vol = adj
- else:
- vol = (_easing / ease_out)
- adj = vol
- $audio.volume_db = (-80 + ((_volume_on + 80) * vol))
- $audio.pitch_scale = 0.1 + ((_pitch_on - 0.1) * vol)
- rotate(deg2rad(degrees_per_second * adj * delta))
- elif _running:
- if not $audio.playing:
- $audio.play()
- rotate(deg2rad(degrees_per_second * delta))
|