public override void drawWall() { if (!hasError) { _device3D.Transform.World = Matrix.Translation(-_wall.X, -_wall.Y, -_wall.Z); // Move To Center _device3D.Transform.World *= Matrix.RotationY(teta); // Rotate on Y axis _device3D.Transform.World *= Matrix.Translation(_wall.RightLowerPos); // Move to old position if (state == doorState.Closing) { if (teta - speed > 0) teta -= speed; else { teta = 0; state = doorState.Closed; } } else if (state == doorState.Opening) { if (teta + speed < _maxRotateAngle) teta += speed; else { teta = _maxRotateAngle; state = doorState.Opened; } } } base.drawWall(); _device3D.Transform.World = Matrix.Identity; }
void OpenDoor() { Vector3 curPos = door.transform.position; float maxOpen = Mathf.Max(dir == OpenDir.x ? door.transform.lossyScale.x : 0, dir == OpenDir.y ? door.transform.lossyScale.y : 0, dir == OpenDir.z ? door.transform.lossyScale.z : 0); if (Mathf.Abs(curPos.x - startPos.x) >= maxOpen || Mathf.Abs(curPos.y - startPos.y) >= maxOpen || Mathf.Abs(curPos.z - startPos.z) >= maxOpen) //Set isOpen to false once maxOpen is reached { state = doorState.stationary; } else { if (Mathf.Abs(curPos.x - startPos.x) <= maxOpen || Mathf.Abs(curPos.y - startPos.y) <= maxOpen || Mathf.Abs(curPos.z - startPos.z) <= maxOpen) { curPos += new Vector3(dir == OpenDir.x ? doorSpeed * Time.deltaTime : 0, dir == OpenDir.y ? doorSpeed * Time.deltaTime : 0, dir == OpenDir.z ? doorSpeed * Time.deltaTime : 0); } } transform.GetChild(0).position = curPos; }
void CloseDoor() { anim.speed = defaultSpeed; doorOpen = doorState.Closing; anim.Play(closeClipName); SFX.PlayOneShot(SFXClip); lasersFinished = Time.time + timeBeforeLasersOn; dynamicObjectsContainer = LevelManager.a.GetCurrentLevelDynamicContainer(); if (dynamicObjectsContainer == null) { return; //didn't find current level, go ahead and ghost through objects } // horrible hack to keep objects that have their physics sleeping ghosting through the door as it closes for (i = defIndex; i < dynamicObjectsContainer.transform.childCount; i++) { if (Vector3.Distance(transform.position, dynamicObjectsContainer.transform.GetChild(i).transform.position) < 5) { Rigidbody changeThis = dynamicObjectsContainer.transform.GetChild(i).GetComponent <Rigidbody>(); if (changeThis != null) { changeThis.WakeUp(); } } } }
void CloseDoor() { anim.speed = 1f; doorOpen = doorState.Closing; anim.Play("DoorClose"); SFX.PlayOneShot(SFXClip); lasersFinished = Time.time + timeBeforeLasersOn; }
// Use this for initialization void Start() { door = transform.GetChild(0); startPos = door.transform.position; state = isDoorOpenOnStart? doorState.opening : doorState.stationary; sounds = GetComponents <AudioSource>(); }
private void OnLoad() { string doorToLoad = GManager.Instance.ReadNextObjectToLoad((DoorId)0); _doorState = (doorState)Enum.Parse(typeof(doorState), GManager.FindStringParameterInObject(doorToLoad, "Door._doorState", "", "")); PlayAnimation(); }
void Update() { if (ajar) { doorOpen = doorState.Closing; anim.Play(openClipName, defIndex, ajarPercentage); anim.speed = speedZero; } if (blocked || (PauseScript.a != null && PauseScript.a.paused)) { Blocked(); } else { if (PauseScript.a != null && !PauseScript.a.paused) { Unblocked(); } } if (debugging) { Debug.Log("doorOpen state = " + doorOpen.ToString()); } AnimatorStateInfo asi = anim.GetCurrentAnimatorStateInfo(defIndex); float playbackTime = asi.normalizedTime; //if (anim.GetCurrentAnimatorStateInfo(defIndex).IsName(idleClosedClipName)) if (doorOpen == doorState.Closing && playbackTime > 0.95f) { doorOpen = doorState.Closed; // Door is closed } //if (anim.GetCurrentAnimatorStateInfo(defIndex).IsName(idleOpenClipName)) if (doorOpen == doorState.Opening && playbackTime > 0.95f) { doorOpen = doorState.Open; // Door is open } if (Time.time > waitBeforeClose) { if ((doorOpen == doorState.Open) && (!stayOpen)) { CloseDoor(); } } if (lasersFinished < Time.time) { for (int i = defIndex; i < laserLines.Length; i++) { laserLines[i].SetActive(true); } } }
public void OnActive() { if (state == doorState.close || state == doorState.closing) { state = doorState.opening; } else { state = doorState.closing; } }
void OnTriggerEnter(Collider col) { if (col.tag == "Player") { state = doorState.opening; if (!sounds[0].isPlaying) { sounds[0].Play(); } } }
void OnTriggerExit(Collider col) { if (col.tag == "Player") { state = doorState.closing; if (!sounds[1].isPlaying) { sounds[1].Play(); } } }
void Use(GameObject owner) { ajar = false; if (useFinished < Time.time) { useFinished = Time.time + useTimeDelay; AnimatorStateInfo asi = anim.GetCurrentAnimatorStateInfo(0); float playbackTime = asi.normalizedTime; //AnimatorClipInfo[] aci = anim.GetCurrentAnimatorClipInfo(0); if (!locked) { if (doorOpen == doorState.Open) { CloseDoor(); return; } if (doorOpen == doorState.Closed) { OpenDoor(); return; } if (doorOpen == doorState.Opening) { if (playbackTime > 0.15f && playbackTime < 0.85f) { doorOpen = doorState.Closing; anim.Play("DoorClose", 0, 1f - playbackTime); SFX.PlayOneShot(SFXClip); } return; } if (doorOpen == doorState.Closing) { if (playbackTime > 0.15f && playbackTime < 0.85f) { doorOpen = doorState.Opening; waitBeforeClose = Time.time + delay; anim.Play("DoorOpen", 0, 1f - playbackTime); SFX.PlayOneShot(SFXClip); } return; } } else { Const.sprint(lockedMessage, owner); // tell the owner of the Use command that we are locked } } }
void OpenDoor() { audioSource.Play (); physicalDoorCollider.enabled = false; myRenderer.enabled = false; button.sprite = buttonSprites [0]; state = doorState.Open; hintImage.enabled = false; timer = 0; Invoke ("CloseDoor", autoCloseTime); }
private void Start() { closePosition = transform.position; if (isOpen) { transform.position += distance; state = doorState.opening; } moreOpen = new bool[3] { closePosition.y + distance.y > closePosition.y, closePosition.y + distance.y > closePosition.y, closePosition.z + distance.z > closePosition.z }; }
void OnTriggerEnter(Collider other) { if (other.gameObject.layer == 9 || other.gameObject.layer == 10 || other.gameObject.layer == 16) { //Debug.Log(other.gameObject.name + " entered the door range"); _count++; if (CurrentState == doorState.CLOSED && !lockedStatus) { //Debug.Log("Opening the doors"); this.CurrentState = doorState.OPEN; this._animator.SetBool("Open", true); } } }
void OnTriggerExit(Collider other) { if (other.gameObject.layer == 9 || other.gameObject.layer == 10 || other.gameObject.layer == 16) { //Debug.Log( other.gameObject.name+ " left the door range"); _count--; if (_count == 0) { //Debug.Log("Closing the doors"); this.CurrentState = doorState.CLOSED; this._animator.SetBool("Open", false); } } }
public void close() { if (_state != doorState.Closed) { _state = doorState.Closed; _isLocked = true; OnClosedDoorEvent(new ClosedDoorEventArgs { DoorClosed = "Door is closed" }); } else if (_state == doorState.Closed) { Console.Write("Døren er allerede lukket"); } }
void OpenDoor() { anim.speed = 1f; doorOpen = doorState.Opening; waitBeforeClose = Time.time + delay; anim.Play("DoorOpen"); SFX.PlayOneShot(SFXClip); //lightsFinished1 = Time.time + timeBeforeLightsOut1; if (toggleLasers) { for (int i = 0; i < laserLines.Length; i++) { laserLines[i].SetActive(false); } lasersFinished = Mathf.Infinity; } }
void Start() { anim = GetComponent <Animator>(); if (startOpen) { doorOpen = doorState.Open; anim.Play("IdleOpen"); } else { doorOpen = doorState.Closed; anim.Play("IdleClosed"); } SFX = GetComponent <AudioSource>(); useFinished = Time.time; }
void Update() { if (ajar) { doorOpen = doorState.Closing; anim.Play("DoorOpen", 0, ajarPercentage); anim.speed = 0f; } if (blocked || (PauseScript.a != null && PauseScript.a.paused)) { Blocked(); } else { if (PauseScript.a != null && !PauseScript.a.paused) { Unblocked(); } } if (anim.GetCurrentAnimatorStateInfo(0).IsName("IdleClosed")) { doorOpen = doorState.Closed; // Door is closed } if (anim.GetCurrentAnimatorStateInfo(0).IsName("IdleOpen")) { doorOpen = doorState.Open; // Door is open } if (Time.time > waitBeforeClose) { if ((doorOpen == doorState.Open) && (!stayOpen)) { CloseDoor(); } } if (lasersFinished < Time.time) { for (int i = 0; i < laserLines.Length; i++) { laserLines[i].SetActive(true); } } }
public void open() { if (!_isLocked && _state != doorState.Open) { _state = doorState.Open; OnDoorOpenEvent(new OpenDoorEventArgs { DoorOpen = "Door is open" }); } else if (_isLocked) { Console.WriteLine("Døren er låst"); } else if (!_isLocked && _state == doorState.Open) { Console.WriteLine("Døren er allerede åben" + "\n"); } }
private void OnMouseDown() { if (_doorState == doorState.close) { if (PlayerCheck() < playerDistance) { _doorState = doorState.open; _thisRenderer.color = defaultColor; PlayAnimation(); _player.PassedLevel(); } else { MessageManager.ShowMessageOnlyText("Подойдите ближе, если хотите открыть эту дверь"); } } }
private void Update() { if (state == doorState.closing) { transform.position += -distance / (1 / Time.deltaTime * time); if (MoreVector(closePosition, transform.position)) { state = doorState.close; } } else if (state == doorState.opening) { transform.position += distance / (1 / Time.deltaTime * time); if (MoreVector(transform.position, closePosition + distance)) { state = doorState.open; } } }
void CloseDoor() { Vector3 curPos = door.transform.position; if (Mathf.Abs(curPos.x - startPos.x) >= Mathf.Abs(doorSpeed) * Time.deltaTime || Mathf.Abs(curPos.y - startPos.y) >= Mathf.Abs(doorSpeed) * Time.deltaTime || Mathf.Abs(curPos.z - startPos.z) >= Mathf.Abs(doorSpeed) * Time.deltaTime) { curPos -= new Vector3(dir == OpenDir.x ? doorSpeed * Time.deltaTime : 0, dir == OpenDir.y ? doorSpeed * Time.deltaTime : 0, dir == OpenDir.z ? doorSpeed * Time.deltaTime : 0); } else { state = doorState.stationary; } transform.GetChild(0).position = curPos; }
IEnumerator AnimateClose() { while (state == doorState.opening) { yield return(null); } if (state == doorState.closed || state == doorState.closing) { yield break; } state = doorState.closing; Vector3 start = bodyTiles[0].transform.position; Vector3 end = start - new Vector3(0, tileSize, 0); for (int i = bodyTiles.Count - 1; i >= 0; i--) { float lerp = 0; while (lerp <= 1) { float delta = Mathf.Lerp(start.y, end.y, lerp); lerp += Time.deltaTime * speed; delta = Mathf.Lerp(start.y, end.y, lerp) - delta; for (int j = i; j < bodyTiles.Count; j++) { bodyTiles[j].transform.Translate(new Vector3(0, delta, 0)); } bottom.transform.Translate(new Vector3(0, delta, 0)); yield return(null); } } state = doorState.closed; }
void UpdateDoor() { switch (state) { case doorState.opening: OpenDoor(); //if (!sound.isPlaying) // sound.Play(); break; case doorState.closing: CloseDoor(); //if (!sound.isPlaying) // sound.Play(); break; default: //sounds[0].Stop(); //sounds[1].Stop(); state = doorState.stationary; break; } }
/// <summary> /// "Open" or "Close" the this window /// </summary> public void openClose() { switch (state) { case doorState.Closed: state = doorState.Opening; break; case doorState.Closing: state = doorState.Closing; break; case doorState.Opened: state = doorState.Closing; break; case doorState.Opening: state = doorState.Opening; break; } }
protected virtual void openDoorByTrigger(bool musicTrigger, bool soundTrigger, string message) { rotationVelocity = 0f; state = doorState.opening; }
protected virtual void openDoor(Collider _collider) { if (_collider == characterController.collider) { rotationVelocity = 0f; state = doorState.opening; } }
// Update is called once per frame protected virtual void FixedUpdate() { switch(state) { case doorState.opening: currentDoorRotation = Mathf.SmoothDampAngle(currentDoorRotation, finalDoorRotation, ref rotationVelocity, doorOpenTime); doorHinge.localRotation = Quaternion.Euler(new Vector3(doorHinge.localRotation.eulerAngles.x, currentDoorRotation, doorHinge.localRotation.eulerAngles.z)); if(currentDoorRotation == finalDoorRotation) state = doorState.open; break; case doorState.closing: currentDoorRotation = Mathf.SmoothDampAngle(currentDoorRotation, startingDoorRotation, ref rotationVelocity, doorCloseTime); doorHinge.localRotation = Quaternion.Euler(new Vector3(doorHinge.localRotation.eulerAngles.x, currentDoorRotation, doorHinge.localRotation.eulerAngles.z)); if(currentDoorRotation == startingDoorRotation) { state = doorState.closed; OnClosed(); } break; default: break; } }
protected void closeDoorOverride(Collider _collider) { if (_collider == characterController.collider) { rotationVelocity = 0f; state = doorState.closing; } }
/// <summary> /// "Open" or "Close" the this window by sounds /// </summary> public void openClose(SoundBox openSound, SoundBox closeSound) { switch (state) { case doorState.Closed: { state = doorState.Opening; openSound.playSound(); } break; case doorState.Closing: state = doorState.Closing; break; case doorState.Opened: { state = doorState.Closing; closeSound.playSound(); } break; case doorState.Opening: state = doorState.Opening; break; } }
void HackDoor() { //play hack sound physicalDoorCollider.enabled = true; myRenderer.enabled = true; button.sprite = buttonSprites [2]; state = doorState.Hacked; }
void Use(UseData ud) { ajar = false; if (useFinished < Time.time) { if (requiredAccessCard == accessCardType.None || ud.owner.GetComponent <PlayerReferenceManager>().playerInventory.GetComponent <AccessCardInventory>().HasAccessCard(requiredAccessCard)) { useFinished = Time.time + useTimeDelay; AnimatorStateInfo asi = anim.GetCurrentAnimatorStateInfo(defIndex); float playbackTime = asi.normalizedTime; //AnimatorClipInfo[] aci = anim.GetCurrentAnimatorClipInfo(defIndex); if (!locked) { if (requiredAccessCard != accessCardType.None) { Const.sprint(requiredAccessCard.ToString() + cardUsedMessage, ud.owner); // tell the owner of the Use command that we are locked } if (doorOpen == doorState.Open) { CloseDoor(); return; } if (doorOpen == doorState.Closed) { OpenDoor(); return; } if (doorOpen == doorState.Opening) { if (playbackTime > minTime && playbackTime < maxTime) { doorOpen = doorState.Closing; anim.Play(closeClipName, defIndex, topTime - playbackTime); SFX.PlayOneShot(SFXClip); } return; } if (doorOpen == doorState.Closing) { if (playbackTime > minTime && playbackTime < maxTime) { doorOpen = doorState.Opening; waitBeforeClose = Time.time + delay; anim.Play(openClipName, defIndex, topTime - playbackTime); SFX.PlayOneShot(SFXClip); } return; } } else { if (requiredAccessCard != accessCardType.None) { Const.sprint(requiredAccessCard.ToString() + cardUsedMessage + butdoorStillLockedMessage, ud.owner); } else { Const.sprint(lockedMessage, ud.owner); // tell the owner of the Use command that we are locked } } } else { Const.sprint(requiredAccessCard.ToString() + cardMessage, ud.owner); // tell the owner of the Use command that we are locked } } }
public override void drawWall() { if (!hasError) { switch (openTo) { case openTranslationVector.Up: _device3D.Transform.World = Matrix.Translation(0, reLocation, 0); break; case openTranslationVector.Down: _device3D.Transform.World = Matrix.Translation(0, -reLocation, 0); break; case openTranslationVector.Right: _device3D.Transform.World = Matrix.Translation(-reLocation, 0, 0); break; case openTranslationVector.Left: _device3D.Transform.World = Matrix.Translation(reLocation, 0, 0); break; case openTranslationVector.Depth: _device3D.Transform.World = Matrix.Translation(0, 0, reLocation); break; case openTranslationVector.OutSide: _device3D.Transform.World = Matrix.Translation(0, 0, -reLocation); break; } if (state == doorState.Closing) { if (reLocation - speed > 0) reLocation -= speed; else { reLocation = 0; state = doorState.Closed; } } else if (state == doorState.Opening) { if (reLocation + speed < maxTranslationDistance) reLocation += speed; else { reLocation = maxTranslationDistance; state = doorState.Opened; } } } if (_isTransparent) { _device3D.RenderState.SourceBlend = Blend.One; _device3D.RenderState.DestinationBlend = Blend.SourceColor; } _device3D.RenderState.AlphaBlendEnable = true; base.drawWall(); _device3D.RenderState.AlphaBlendEnable = false; _device3D.Transform.World = Matrix.Identity; }
void CloseDoor() { Collider2D[] others = Physics2D.OverlapCircleAll (transform.position, 2, mask); foreach(Collider2D other in others) { if(detectorCollider.IsTouching(other)) { Invoke ("CloseDoor", autoCloseTime); return; } } audioSource.Play (); physicalDoorCollider.enabled = true; myRenderer.enabled = true; button.sprite = buttonSprites [1]; state = doorState.Closed; }