Files

52 lines
1.4 KiB
C#
Raw Permalink Normal View History

2022-05-10 05:46:56 +02:00
using UnityEngine;
public class Shadow : MonoBehaviour
{
2022-09-18 16:22:36 +03:00
[SerializeField] private GameObject _playerShadowPrefab = default;
private SpriteRenderer _spriteRenderer;
private SpriteRenderer _shadowSpriteRenderer;
private Transform _shadow;
2023-01-13 15:28:18 +02:00
private bool _activated;
2022-05-10 05:46:56 +02:00
2022-09-18 16:22:36 +03:00
void OnEnable()
{
2023-01-13 15:28:18 +02:00
if (!_activated)
{
_activated = true;
_spriteRenderer = GetComponent<SpriteRenderer>();
_shadow = Instantiate(_playerShadowPrefab).transform.GetChild(0);
_shadowSpriteRenderer = _shadow.GetComponent<SpriteRenderer>();
_shadow.localRotation = Quaternion.Euler(-45.0f, 0.0f, -180.0f - transform.root.eulerAngles.z);
}
2022-09-18 16:22:36 +03:00
}
2022-05-10 05:46:56 +02:00
2022-09-18 16:22:36 +03:00
void LateUpdate()
{
_shadow.localPosition = new Vector2(transform.position.x, transform.position.y * -1);
_shadow.localScale = new Vector2(transform.root.localScale.x * -1, 1.0f);
_shadowSpriteRenderer.sprite = _spriteRenderer.sprite;
}
2022-05-10 05:46:56 +02:00
2022-10-21 21:20:37 +03:00
public void SetInvinsible(bool state)
{
_shadowSpriteRenderer.enabled = !state;
}
2022-09-18 16:22:36 +03:00
private void OnDestroy()
{
if (_shadowSpriteRenderer != null)
{
Destroy(_shadow.root.gameObject);
}
}
2022-07-28 15:16:08 +03:00
2022-09-18 16:22:36 +03:00
private void OnDisable()
{
if (_shadowSpriteRenderer != null)
{
_shadow.root.gameObject.SetActive(false);
}
}
2022-05-10 05:46:56 +02:00
}