correction du merge request

This commit is contained in:
Baptiste 2023-07-07 19:15:56 -04:00
parent ccd2e898e5
commit 5238cb2e8a
6 changed files with 89 additions and 62 deletions

View File

@ -4,8 +4,14 @@ using UnityEngine;
public class Ally : Entity public class Ally : Entity
{ {
public override void Start()
{
base.Start();
void Update() { }
void Update()
{
if(IsEnemyDetected) { if(IsEnemyDetected) {
AttackEnemy(); AttackEnemy();
@ -13,17 +19,17 @@ public class Ally : Entity
} }
void AttackEnemy() { void AttackEnemy()
{
//Attack Cooldown //Attack Cooldown
if(AttackSpeed < AttackSpeedWait) { if(AttackSpeed < AttackSpeedWait) {
Enemy.hit(AttackDamage); Enemy.Hit(AttackDamage);
Debug.Log("Opponent Hp = " + Enemy.Hp);
//Kill if no hp //Kill if no hp
if(Enemy.Hp <= 0) { if(Enemy.Hp <= 0) {
IsEnemyDetected = false; IsEnemyDetected = false;
Enemy.death(); Enemy.Death();
} }
AttackSpeedWait = 0f; AttackSpeedWait = 0f;

View File

@ -11,12 +11,16 @@ public class Archer : Ally
private Rigidbody2D _rigidbodyAlly; private Rigidbody2D _rigidbodyAlly;
private Rigidbody2D _rigidbodyOpponent; private Rigidbody2D _rigidbodyOpponent;
void Start() { public override void Start()
{
base.Start();
_rigidbodyAlly = GetComponent<Rigidbody2D>(); _rigidbodyAlly = GetComponent<Rigidbody2D>();
Animation = gameObject.AddComponent<AnimationEntity>(); Animation = gameObject.AddComponent<AnimationEntity>();
} }
void Update() { void Update()
{
if(IsEnemyDetected) { if(IsEnemyDetected) {
_rigidbodyOpponent = Enemy.GetComponent<Rigidbody2D>(); _rigidbodyOpponent = Enemy.GetComponent<Rigidbody2D>();
@ -25,12 +29,13 @@ public class Archer : Ally
} }
void AttackEnemy() { void AttackEnemy()
{
//Attack Cooldown //Attack Cooldown
if(AttackSpeed < AttackSpeedWait) { if(AttackSpeed < AttackSpeedWait) {
Animation.Attack(); Animation.PlayAttackAnim();
GameObject _newArrow = Instantiate(_arrow, _rigidbodyAlly.position, Quaternion.identity); GameObject _newArrow = Instantiate(_arrow, _rigidbodyAlly.position, Quaternion.identity);

View File

@ -5,44 +5,50 @@ using UnityEngine;
public class AnimationEntity : MonoBehaviour public class AnimationEntity : MonoBehaviour
{ {
private Animator _animator_entity; private Animator _animatorEntity;
private bool _doSomething = false; private bool _doSomething = false;
private bool _isDead = false; private bool _isDead = false;
void Start() { void Start()
_animator_entity = GetComponentInChildren<Animator>(); {
_animatorEntity = GetComponentInChildren<Animator>();
} }
void Update() { void Update()
if (_doSomething && _animator_entity.GetCurrentAnimatorStateInfo(0).normalizedTime >= 1f)
{ {
Idle();
if (_doSomething && _animatorEntity.GetCurrentAnimatorStateInfo(0).normalizedTime >= 1f)
{
PlayIdleAnim();
_doSomething = false; _doSomething = false;
} }
} }
public void Idle() { public void PlayIdleAnim()
{
if(!_isDead) { if(!_isDead) {
_animator_entity.Play("idle", 0, 0f); _animatorEntity.Play("idle", 0, 0f);
} }
} }
public void Walk() { public void PlayWalkAnim()
{
if(!_isDead) { if(!_isDead) {
_animator_entity.Play("walk", 0, 0f); _animatorEntity.Play("walk", 0, 0f);
} }
} }
public void Attack() { public void PlayAttackAnim()
{
if(!_isDead) { if(!_isDead) {
_animator_entity.Play("attack", 0, 0f); _animatorEntity.Play("attack", 0, 0f);
_doSomething = true; _doSomething = true;
} }
} }
public void Die() { public void PlayDieAnim()
_animator_entity.Play("die", 0, 0f); {
_animatorEntity.Play("die", 0, 0f);
_doSomething = true; _doSomething = true;
_isDead = true; _isDead = true;
} }

View File

@ -22,13 +22,13 @@ public class Detection : MonoBehaviour
void OnTriggerEnter2D(Collider2D other) void OnTriggerEnter2D(Collider2D other)
{ {
//Projectiles detection + damage deal //Projectiles detection + damage deal
if(_entityLinked is not null) { if(_entityLinked != null) {
if(_projectileDamage > 0 && other.gameObject.GetComponent<Entity>() == _entityLinked) { if(_projectileDamage > 0 && other.gameObject.GetComponent<Entity>() == _entityLinked) {
_entityLinked.hit(_projectileDamage); _entityLinked.Hit(_projectileDamage);
//Kill if no hp //Kill if no hp
if(other.gameObject.GetComponent<Entity>().Hp <= 0) { if(other.gameObject.GetComponent<Entity>().Hp <= 0) {
other.gameObject.GetComponent<Entity>().death(); other.gameObject.GetComponent<Entity>().Death();
_entityLinked = null; _entityLinked = null;
} }
@ -37,8 +37,9 @@ public class Detection : MonoBehaviour
} }
void OnTriggerStay2D(Collider2D other) { void OnTriggerStay2D(Collider2D other)
if(_entityLinked is not null) { {
if(_entityLinked != null) {
if(_entityLinked.Enemy == null) { if(_entityLinked.Enemy == null) {
//Detect the enemy and inform the Ally //Detect the enemy and inform the Ally
if (other.gameObject.tag == "Opponent" && _entityLinked is Ally) { if (other.gameObject.tag == "Opponent" && _entityLinked is Ally) {
@ -58,7 +59,7 @@ public class Detection : MonoBehaviour
void OnTriggerExit2D(Collider2D other) void OnTriggerExit2D(Collider2D other)
{ {
if(_entityLinked is not null) { if(_entityLinked != null) {
if(_projectileDamage == 0) { if(_projectileDamage == 0) {
if ((other.gameObject.tag == "Opponent" && _entityLinked is Ally) || (other.gameObject.tag == "Ally" && _entityLinked is Opponent)) { if ((other.gameObject.tag == "Opponent" && _entityLinked is Ally) || (other.gameObject.tag == "Ally" && _entityLinked is Opponent)) {
_entityLinked.IsEnemyDetected = false; _entityLinked.IsEnemyDetected = false;

View File

@ -16,62 +16,68 @@ public class Entity : LevelObject
private float _attack_speed; private float _attack_speed;
private float _attack_speed_wait = 0f; private float _attack_speed_wait = 0f;
private AnimationEntity _animation; private AnimationEntity _animation;
private Shader shaderGUItext; private Shader _shaderGUItext;
private Shader shaderSpritesDefault; private Shader _shaderSpritesDefault;
private SpriteRenderer[] _spriteRenderers;
//Enemy Spotted //Enemy Spotted
private bool _isEnemyDetected = false; private bool _isEnemyDetected = false;
private Entity _enemy; private Entity _enemy;
//Methods //Methods
public void death() { public virtual void Start()
_animation.Die(); {
Invoke("dying", 0.1f); _spriteRenderers = GetComponentsInChildren<SpriteRenderer>();
} }
void dying() { //Start the animation of death and the fading of the entity
SpriteRenderer[] spriteRenderers; public void Death()
spriteRenderers = GetComponentsInChildren<SpriteRenderer>(); {
_animation.PlayDieAnim();
Invoke("Dying", 0.1f);
}
//Recursive method that fade the dying entity
foreach (SpriteRenderer renderer in spriteRenderers) void Dying()
{
foreach (SpriteRenderer renderer in _spriteRenderers)
{ {
Color currentColor = renderer.color; Color currentColor = renderer.color;
currentColor.a = currentColor.a - 0.1f; currentColor.a = currentColor.a - 0.1f;
renderer.color = currentColor; renderer.color = currentColor;
} }
if(spriteRenderers[0].color.a > 0f) { if(_spriteRenderers[0].color.a > 0f) {
Invoke("dying", 0.1f); Invoke("Dying", 0.1f);
}else { }else {
Destroy(gameObject); Destroy(gameObject);
} }
} }
public void hit(int damage) { //When hit : get damage and start a flash of light
public void Hit(int damage)
{
_hp-=damage; _hp-=damage;
SpriteRenderer[] spriteRenderers; _shaderGUItext = Shader.Find("GUI/Text Shader");
spriteRenderers = GetComponentsInChildren<SpriteRenderer>(); _shaderSpritesDefault = Shader.Find("Sprites/Default");
shaderGUItext = Shader.Find("GUI/Text Shader");
shaderSpritesDefault = Shader.Find("Sprites/Default");
foreach (SpriteRenderer renderer in spriteRenderers) foreach (SpriteRenderer renderer in _spriteRenderers)
{ {
renderer.material.shader = shaderGUItext; renderer.material.shader = _shaderGUItext;
} }
Invoke("returnNormalColor", 0.1f); Invoke("ReturnNormalColor", 0.1f);
} }
void returnNormalColor() { //End the flash of light from the method above
SpriteRenderer[] spriteRenderers; void ReturnNormalColor()
spriteRenderers = GetComponentsInChildren<SpriteRenderer>();
foreach (SpriteRenderer renderer in spriteRenderers)
{ {
renderer.material.shader = shaderSpritesDefault;
foreach (SpriteRenderer renderer in _spriteRenderers)
{
renderer.material.shader = _shaderSpritesDefault;
} }
} }

View File

@ -8,13 +8,16 @@ public class Opponent : Entity
private Vector2 _movementVector = Vector2.zero; private Vector2 _movementVector = Vector2.zero;
private Rigidbody2D _rigidbody; private Rigidbody2D _rigidbody;
void Start() public override void Start()
{ {
base.Start();
_rigidbody = GetComponent<Rigidbody2D>(); _rigidbody = GetComponent<Rigidbody2D>();
Animation = gameObject.AddComponent<AnimationEntity>(); Animation = gameObject.AddComponent<AnimationEntity>();
} }
void Update() { void Update()
{
_movementVector.x = -Time.deltaTime * Speed; _movementVector.x = -Time.deltaTime * Speed;
@ -26,18 +29,18 @@ public class Opponent : Entity
} }
void AttackEnemy() { void AttackEnemy()
{
//Attack Cooldown //Attack Cooldown
if(AttackSpeed < AttackSpeedWait) if(AttackSpeed < AttackSpeedWait)
{ {
Animation.Attack(); Animation.PlayAttackAnim();
Enemy.hit(AttackDamage); Enemy.Hit(AttackDamage);
Debug.Log("Ally Hp = " + Enemy.Hp);
//Kill if no hp //Kill if no hp
if(Enemy.Hp <= 0) { if(Enemy.Hp <= 0) {
Enemy.death(); Enemy.Death();
} }
AttackSpeedWait = 0f; AttackSpeedWait = 0f;