extends Node2D
@onready var light = $DirectionalLight2D
enum {
MORNING,
DAY,
EVNENG,
NIGHT,
}
var state = MORNING
func _ready ():
light.enabled = true
func _process(delta: float) -> void:
match state :
MORNING:
morning_state()
EVNENG:
evning_state()
func morning_state():
var tween = get_tree().create_tween()
tween.tween_property(light,"energy", 0.2, 20)
func evning_state():
var tween = get_tree().create_tween()
tween.tween_property(light,"energy", 0.95, 20)
func _on_day_night_timeout() -> void:
if state < 3:
state +=1
else :
state = MORNING
script for changing day and night does not work
KingGD
2
Maybe because you are creating multi tweens in every frames of process, can you try this?
extends Node2D
@onready var light = $DirectionalLight2D
enum {
MORNING,
DAY,
EVNENG,
NIGHT,
}
var state = MORNING
var state_changing = false
func _ready ():
light.enabled = true
func _process(delta: float) -> void:
#if state_changing: return
if !state_changing:
match state:
MORNING:
morning_state()
EVNENG:
evning_state()
func morning_state():
var tween = get_tree().create_tween()
tween.tween_property(light,"energy", 0.2, 20)
state_changing = true
func evning_state():
var tween = get_tree().create_tween()
tween.tween_property(light,"energy", 0.95, 20)
state_changing = true
func _on_day_night_timeout() -> void:
if state < 3:
state += 1
else :
state = MORNING
state_changing = false
thanks but in your script there is an error
“Used space character for indentation instead of tab as used before in the file.” on the lines:
func _process(delta: float) -> void:
tween.tween_property(light, "energy",0.2, 20)
tween.tween_property(light,"energy", 0.95, 20)
state = MORNING
I couldn’t fix this problem
KingGD
4
Just paste the codes in your script and hit CTRL+S