Implemented Bullet component

Added Death() method to AbstractCharacter
Implemented basic bullet collision detection and effect
This commit is contained in:
trotFunky 2019-09-17 20:45:08 +02:00
parent 98402a90f7
commit 37e8c8d689
3 changed files with 60 additions and 8 deletions

View file

@ -1,4 +1,5 @@
using System.Collections;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
@ -93,9 +94,24 @@ public abstract class AbstractCharacter : MonoBehaviour
public abstract void Move(Vector2 movementDirection);
public abstract void Shoot();
// TODO : Manage hurt + OnCollision + Death'n stuff
public void Hurt()
private void OnCollisionEnter2D(Collision2D other)
{
throw new System.NotImplementedException();
Bullet bullet = other.gameObject.GetComponent<Bullet>();
if (bullet == null)
{
return;
}
Hurt(bullet.Damage);
}
public void Hurt(int damage)
{
CurrentHealth -= damage;
if (CurrentHealth <= 0)
{
Death();
}
}
// Handles the death of the character, should be overriden
protected abstract void Death();
}

View file

@ -1,13 +1,38 @@
using System.Collections;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Bullet : MonoBehaviour
{
// Start is called before the first frame update
void Start()
[SerializeField] private int _damage;
public int Damage => _damage;
// Speed in m/s
[SerializeField] private float _speed;
public float Speed
{
get { return _speed; }
set { _speed = value; }
}
[SerializeField] private Vector2 _direction;
public Vector2 Direction
{
get { return _direction; }
set { _direction = value; }
}
private void Start()
{
Mover mover = GetComponentInParent<Mover>();
if (mover == null)
{
throw new MissingComponentException("Missing Mover!");
}
mover.Direction = Direction;
mover.MaxSpeed = Speed;
}
// Update is called once per frame
@ -15,4 +40,10 @@ public class Bullet : MonoBehaviour
{
}
// Destroy on Stay, collision effects should be handled on Enter
private void OnCollisionStay2D(Collision2D other)
{
Destroy(gameObject);
}
}

View file

@ -17,4 +17,9 @@ public class PlayerCharacter : AbstractCharacter
// TODO : Implement
throw new System.NotImplementedException();
}
protected override void Death()
{
throw new System.NotImplementedException();
}
}