Hello I have been working on this game and I made this lazer that goes one and one with a spike which when the lazer gets touched for too long the spikes will activate(note that my player doesn't have any hp so there is no tanking dmg) but when my lazer activates the spike wont close so you will come to an end and will have to go to menu and re play I have also thought of the possiblity of making it when you die just reset that scene but after remembering the finale level reseting the scene will reset your progress in the level so I am trying to avoid that at all costs. I have already made a closing function and it works when I activate it inside of my ready function but if I try to call it when the player dies it doesn't work(though it wouldn't be good as it will only close that certain spike). Just to clarify my problem is to reset my spike and I also will need a way to reset the Lazer
Here is my code if you need:
Spike:
extends Area2D
const OpenSpikeSprite = preload("res://Assests/Tile Set/Open Spike.png")
const SpikeHolderSprite = preload("res://Assests/Tile Set/Spike Holder.png.png")
func ready():
Closespike()
func Openspike():
$Sprite.texture = OpenSpike_Sprite
$CollisionPolygon2D.disabled = false
func Closespike():
$Sprite.texture = SpikeHolder_Sprite
$CollisionPolygon2D.disabled = true
func onSpikebodyentered(body):
if "Player" in body.name:
body._died()
func onLazerOpenspike():
Open_spike()
func onLazer2Openspike():
Open_spike()
func onLazer3Openspike():
Open_spike()
func onLazer4Openspike():
Open_spike()
func onLazer8Openspike():
Open_spike()
Lazer:
extends Area2D
const GreenLazer = preload("res://Assests/Tile Set/Green Lazer.png.png")
const YellowLazer = preload("res://Assests/Tile Set/Yellow Lazer.png.png")
const Red_Lazer = preload("res://Assests/Tile Set/Red Lazer.png.png")
var Triped = false
var HasbeenTriped = false
var Lazer_detected = false
var Reset = false
signal Open_spike
func physicsprocess(delta):
Lazer_Checking()
func LazerChecking():
if Triped and !HasbeenTriped:
$Sprite.texture = YellowLazer
Triped = false
$Timer.start(0.05)
HasbeenTriped = true
if Triped and HasbeenTriped:
$Sprite.texture = RedLazer
emitsignal("Openspike")
Lazerdetected = true
Reset = true
$Timer.start(5)
else:
$Sprite.texture = Green_Lazer
func onLazerbodyentered(body):
if "Player" in body.name:
#emitsignal("Openspike")
print("start")
$Timer.start(0.05)
func onTimertimeout():
if !Reset:
Triped = true
print("end")
if Reset:
print("reseted")
Reset = false
Hasbeen_Triped = false
Triped = false
func onLazerbodyexited(body):
if !Lazerdetected:
$Sprite.texture = GreenLazer
$Timer.stop()