Added Weapon

This commit is contained in:
Stedd 2023-10-08 18:48:54 +02:00
parent 639357ca9a
commit 08e1e8f0ea
4 changed files with 94 additions and 0 deletions

View File

@ -29,7 +29,12 @@ namespace GameDev.CoreSystems
public void ModifyHealth(int healthChange) public void ModifyHealth(int healthChange)
{ {
if (IsInvulnerable) return; if (IsInvulnerable) return;
CurrentHealth += healthChange; CurrentHealth += healthChange;
if (CurrentHealth >= 0) return;
print($"{transform.parent.parent.name} died");
} }
#endregion #endregion

View File

@ -14,6 +14,9 @@ namespace GameDev.CoreSystems
[SerializeField] private Transform _centerPosition; [SerializeField] private Transform _centerPosition;
[SerializeField] private Transform _basePosition; [SerializeField] private Transform _basePosition;
[field: Header("Collider")]
[field: SerializeField] public Collider Collider { get; private set; }
private void OnEnable() private void OnEnable()
{ {
_activeTargetableRuntimeSet._list.Add(this); _activeTargetableRuntimeSet._list.Add(this);

75
Scripts/Weapon.cs Normal file
View File

@ -0,0 +1,75 @@
using System;
using UnityEngine;
namespace GameDev.CoreSystems
{
public class Weapon : MonoBehaviour, IWeapon
{
[field: Header("RigConnections")]
[field: SerializeField] public Transform PivotPoint { get; private set; }
[field: SerializeField] public Transform BarrelEndPoint { get; private set; }
[field: Header("Config")]
[field: SerializeField] public float FireRate { get; set; }
[field: SerializeField] public float Damage { get; set; }
[field: Header("State")]
[field: SerializeField] public bool FireWeapon { get; set; }
[field: SerializeField] private float _timeUntilFire;
private Vector3 _start;
private Vector3 _direction;
// private bool drawGizmo;
// private Vector3 start;
// private Vector3 end;
//
// private void OnEnable()
// {
// start = BarrelEndPoint.position;
// end = BarrelEndPoint.position;
// }
//
// private void OnDrawGizmos()
// {
// if (drawGizmo)
// {
// Gizmos.DrawLine(start, end);
// }
// }
private void Update()
{
if (FireWeapon)
{
// drawGizmo = true;
// start = BarrelEndPoint.position;
// end = start + Vector3.forward * 5;
_timeUntilFire -= Time.deltaTime;
if (!(_timeUntilFire <= 0)) return;
// _start = BarrelEndPoint.position;
//_direction = BarrelEndPoint.forward;
var ray = new Ray(BarrelEndPoint.position, BarrelEndPoint.forward);
Debug.DrawRay(BarrelEndPoint.position, BarrelEndPoint.forward * 10, Color.green);
if (Physics.Raycast(ray, out RaycastHit hitInfo))
{
if (hitInfo.transform.TryGetComponent(out Targetable target))
{
print("pew");
target.Damageable.ModifyHealth(Mathf.RoundToInt(-Damage));
}
}
_timeUntilFire = FireRate;
}
else
{
// drawGizmo = false;
_timeUntilFire = 0;
}
}
}
}

11
Scripts/Weapon.cs.meta Normal file
View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 86bd9978589203b4db636cf6248e263b
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: