75 lines
2.1 KiB
C#
75 lines
2.1 KiB
C#
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;
|
||
}
|
||
}
|