Files
2023-10-22 15:08:39 +02:00

71 lines
1.9 KiB
C#

using System.Collections;
using UnityEngine;
[
RequireComponent(typeof(PlayerManager)),
RequireComponent(typeof(SpriteRenderer)),
RequireComponent(typeof(CircleCollider2D))
]
public class PlayerCollisions : MonoBehaviour
{
private PlayerManager _manager;
private SpriteRenderer _sr;
private CircleCollider2D _trigger;
private void Start()
{
_manager = GetComponent<PlayerManager>();
_sr = GetComponent<SpriteRenderer>();
_trigger = GetComponent<CircleCollider2D>();
}
private void Update()
{
_trigger.radius = _manager.OrbAbsorberRadius;
}
private void OnTriggerStay2D(Collider2D collision)
{
/** --- Orb Absorber ------------------------------- */
if (collision.gameObject.CompareTag("Orb"))
{
GameObject orb = collision.gameObject;
orb.transform.position = Vector3.MoveTowards(orb.transform.position, transform.position, 1f * Time.deltaTime);
if (orb.transform.position == transform.position)
{
Destroy(orb);
}
}
}
private void OnTriggerExit2D(Collider2D collision)
{
if (collision.gameObject.CompareTag("Orb"))
{
GameObject orb = collision.gameObject;
if (orb.transform.position == transform.position)
{
_manager.AddExperience((int)orb.GetComponent<OrbStats>().OrbValue);
}
}
}
public void AnimateHit()
{
StartCoroutine(IAnimateHit());
}
private IEnumerator IAnimateHit()
{
for(int i = 0; i < 6; i++)
{
_sr.color = new Color(_sr.color.r, _sr.color.g, _sr.color.b, 0f);
yield return new WaitForSeconds(.1f);
_sr.color = new Color(_sr.color.r, _sr.color.g, _sr.color.b, 1f);
yield return new WaitForSeconds(.1f);
}
}
}