Files
broberry/Assets/Scripts/Weapons/Projectile.cs

47 lines
1.3 KiB
C#

using System;
using Data;
using Interfaces;
using KBCore.Refs;
using Systems;
using UnityEngine;
namespace Weapons
{
public class Projectile : MonoBehaviour, IDamageInflector, IDamageInflectorSetup
{
[Self, SerializeField] private Rigidbody2D rb;
[SerializeField] private float speed = 10f;
[SerializeField] private float lifeTime = 5f;
public float Damage { get; private set; }
public GameObject Owner { get; private set; }
public DamageType Type => DamageType.Ranged;
public void Setup(Character attacker)
{
Damage = attacker.attributes.Damage * attacker.attributes.RangedDamage;
Owner = attacker.gameObject;
}
private void Start()
{
Destroy(gameObject, lifeTime);
}
private void FixedUpdate()
{
var direction = transform.up.normalized;
var movement = direction * (speed * Time.fixedDeltaTime);
rb.MovePosition(rb.position + (Vector2)movement);
}
private void OnTriggerEnter2D(Collider2D other)
{
other.TryGetComponent<Health>(out var health);
if (other.gameObject == Owner) return;
health.TakeDamage(Damage);
Destroy(gameObject);
}
}
}