void Update() { if (state == MoveableWallState.OneToTwo) { distCovered = (Time.time - startTime) * speed; fractionOfJourney = distCovered / journeyLength; transform.position = Vector3.Lerp(pos1, pos2, fractionOfJourney); if (fractionOfJourney > 0.99f) { state = MoveableWallState.Pos2; if (!isActivated) { state = MoveableWallState.TwoToOne; startTime = Time.time; } } } if (state == MoveableWallState.TwoToOne) { distCovered = (Time.time - startTime) * speed; fractionOfJourney = distCovered / journeyLength; transform.position = Vector3.Lerp(pos2, pos1, fractionOfJourney); if (fractionOfJourney > 0.99f) { state = MoveableWallState.Pos1; if (isActivated) { state = MoveableWallState.OneToTwo; startTime = Time.time; } } } }
override public void Activate() { isActivated = true; if (state == MoveableWallState.Pos1) { state = MoveableWallState.OneToTwo; startTime = Time.time; } UpdateLights(); }
override public void Desactivate() { isActivated = false; if (state == MoveableWallState.Pos2) { state = MoveableWallState.TwoToOne; startTime = Time.time; } if (stopImmediatly) { state = MoveableWallState.TwoToOne; startTime = Time.time - (1 - fractionOfJourney) * journeyLength / speed; } UpdateLights(); }