44 lines
948 B
GDScript
44 lines
948 B
GDScript
extends KinematicBody
|
|
|
|
# export variables
|
|
export(bool) var being_touched
|
|
|
|
# const
|
|
const OPENING_SPEED = 50
|
|
|
|
# private members
|
|
var _startingRotY
|
|
var _isMoving = false
|
|
var _isOpening = false
|
|
var _degrees = 0
|
|
|
|
# Called when the node enters the scene tree for the first time.
|
|
func _ready():
|
|
_startingRotY = global_transform.basis.get_euler().y
|
|
|
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
|
func _process(delta):
|
|
#if Input.is_action_just_pressed("interact"):
|
|
if being_touched:
|
|
_isMoving = true
|
|
_isOpening = !_isOpening
|
|
being_touched = false
|
|
|
|
if _isMoving:
|
|
doorMove(delta)
|
|
|
|
func doorMove(delta):
|
|
if _isOpening:
|
|
if _degrees < 100:
|
|
_degrees += OPENING_SPEED * delta
|
|
else:
|
|
_degrees = 100
|
|
_isMoving = false
|
|
else:
|
|
if _degrees > 0:
|
|
_degrees -= OPENING_SPEED * delta
|
|
else:
|
|
_degrees = 0
|
|
_isMoving = false
|
|
rotate_y(_degrees * PI/180 - global_transform.basis.get_euler().y + _startingRotY)
|