Unity_2lab/2/Assets/Scripts/Card.cs
2025-10-10 04:49:06 +03:00

75 lines
2.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using UnityEngine;
[RequireComponent(typeof(SpriteRenderer), typeof(BoxCollider2D), typeof(AudioSource))]
public class Card : MonoBehaviour
{
private SpriteRenderer _spriteRenderer;
private Sprite _backSprite;
private Sprite _frontSprite;
private Animation _animation;
private bool _isBackSide = true;
private BoxCollider2D _boxCollider2d;
// НОВОЕ: Компонент для проигрывания звука
private AudioSource _audioSource;
public int Index {get; private set; }
private CardCollector _cardCollector;
private void Awake()
{
_spriteRenderer = GetComponent<SpriteRenderer>();
_animation = GetComponent<Animation>();
_boxCollider2d = GetComponent<BoxCollider2D>();
// НОВОЕ: Получаем ссылку на AudioSource
_audioSource = GetComponent<AudioSource>();
}
private void OnMouseDown()
{
if (_cardCollector.TwoCardsClosed())
{
_boxCollider2d.enabled = false;
// НОВОЕ: Проигрываем звук при нажатии
_audioSource.Play();
CardAnimation();
_cardCollector.OpenCard(this);
}
}
public void EnableCollider()
{
_boxCollider2d.enabled = true;
}
public void ChangeSpriteCard()
{
_spriteRenderer.sprite = _isBackSide ? _backSprite : _frontSprite;
Debug.Log($"Card {gameObject.name}: Changing to {(_isBackSide ? "Back" : "Front")} sprite. Current _isBackSide: {_isBackSide}");
}
public void CardAnimation()
{
_isBackSide = !_isBackSide;
_animation.Play(_isBackSide ? "ToBack" : "ToFront");
}
public void CardSettings(Sprite back, Sprite front, int index)
{
_spriteRenderer.sprite = _backSprite = back;
_frontSprite = front;
Index = index;
// На случай, если в префабе забыли, убедимся, что он выключен в начале:
// if (_audioSource != null) _audioSource.Stop();
}
public void SetCardCollector(CardCollector cardCollector)
{
_cardCollector = cardCollector;
}
}