// Update is called once per frame void Update() { if (Input.GetMouseButtonDown(0)) { Debug.Log("Mouse down"); RaycastHit hitInfo = new RaycastHit(); if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hitInfo)) { if (hitInfo.collider.gameObject == frontDoorCollider) { moveDoor = true; Debug.Log("Front door hit"); doorCollision = DoorCollision.FRONT; } else if (hitInfo.collider.gameObject == backDoorCollider) { moveDoor = true; Debug.Log("Back door hit"); doorCollision = DoorCollision.BACK; } else { doorCollision = DoorCollision.NONE; } } } if (Input.GetMouseButtonUp(0)) { moveDoor = false; Debug.Log("Mouse up"); } }
// Update is called once per frame void Update() { UpdateDoorStatus(); if (Input.GetMouseButtonDown(0)) { RaycastHit[] hits; hits = Physics.RaycastAll(Camera.main.ScreenPointToRay(Input.mousePosition), 2.0f); for (int i = 0; i < hits.Length; i++) { RaycastHit hitInfo = hits[i]; if (hitInfo.collider.gameObject == frontDoorCollider) { moveDoor = true; doorCollision = DoorCollision.FRONT; if (!isOpen) { PlaySound(m_Locked); } else if (!m_AudioSource.isPlaying) { PlayLoopedSound(m_Open); } } else if (hitInfo.collider.gameObject == backDoorCollider) { moveDoor = true; doorCollision = DoorCollision.BACK; if (!isOpen) { PlaySound(m_Locked); } else if (!m_AudioSource.isPlaying) { PlayLoopedSound(m_Open); } } else { doorCollision = DoorCollision.NONE; } } } if (Input.GetMouseButtonUp(0)) { moveDoor = false; if (m_AudioSource.clip == m_Open) { m_AudioSource.Pause(); } } }
public Door(Vector2 position, Game1 game) : base(game, new Vector2(Chunk.TileSize * 3, Chunk.TileSize)) { Position = position + Vector2.UnitY * (Chunk.TileSize / 2); Sprite = new AnimatedSprite(null, game, new Vector2(46, 32)); doorCollision = new DoorCollision(Position, game); }