Good night guys, so I’m wanting to make it have a chance for the Player to crit the Enemy, so I made this code:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Munição : MonoBehaviour
{
[SerializeField] float Speed;
public int Dano = 1;
public ParticleSystem Explosao_Tiro1;
[SerializeField] public float chanceDeCritico = 1.0f;
void Start()
{
if(Random.value <= chanceDeCritico)
{
Dano *= 2;
print("Critical");
print(Dano);
}
}
void Update()
{
transform.Translate(Vector3.up * Time.deltaTime * Speed);
}
void OnCollisionEnter2D(Collision2D collision)
{
if(collision.gameObject.CompareTag("Inimigo"))
{
Destroy(gameObject);
Instantiate(Explosao_Tiro1, transform.position, Quaternion.identity);
}
if(collision.gameObject.CompareTag("Parede"))
{
Destroy(gameObject);
Instantiate(Explosao_Tiro1, transform.position, Quaternion.identity);
}
if(collision.gameObject.CompareTag("MuniçaoInimigo"))
{
Destroy(gameObject);
Instantiate(Explosao_Tiro1, transform.position, Quaternion.identity);
}
}
}
When I went to test it, the print was saying that the Player’s Ammo Damage was doing 2 damage, but the Enemy was only receiving 1 damage, I don’t know what else to do ;-;
I don’t know if it helps but here is the Enemy Code:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Inimigo : MonoBehaviour
{
public bool Vivo = true;
public int VidaInimigo;
public SpriteRenderer SpriteInimigo;
public GameObject Player;
public bool liberaPer = false;
public float vel;
public ParticleSystem ExplosaoInimigo;
public GameObject coin;
private Munição Dano;
public GameObject Munição;
public int DanoInimigo;
private Transform target;
public float fieldofImpact;
public float force;
public LayerMask LayerToHit;
public float DropCoin;
public float minValue;
public float maxValue;
void Start()
{
Dano = Munição.GetComponent<Munição>();
SpriteInimigo = GetComponent<SpriteRenderer>();
target = GameObject.FindGameObjectWithTag("Player").GetComponent<Transform>();
}
void Update()
{
if(liberaPer == true && target != null)
{
transform.position = Vector2.MoveTowards(transform.position, target.transform.position, vel * Time.deltaTime);
}
}
void OnCollisionEnter2D(Collision2D collision)
{
if(collision.gameObject.CompareTag("Muniçao"))
{
StartCoroutine("ColorDano");
if(VidaInimigo > 0)
{
VidaInimigo -= Dano.Dano;
}
if(VidaInimigo <= 0)
{
explode();
var cloneExplosao = Instantiate(ExplosaoInimigo, transform.position, Quaternion.identity);
ChamarDropCoin();
Destroy(this.gameObject);
}
}
}
void OnTriggerEnter2D(Collider2D collider)
{
if(collider.gameObject.CompareTag("Player"))
{
liberaPer = true;
}
}
void explode()
{
Collider2D[] objects = Physics2D.OverlapCircleAll(transform.position, fieldofImpact, LayerToHit);
foreach (Collider2D obj in objects)
{
Vector2 direction = obj.transform.position - transform.position;
obj.GetComponent<Rigidbody2D>().AddForce(direction * force);
}
}
void OnDrawGizmosSelected()
{
Gizmos.color = Color.red;
Gizmos.DrawWireSphere(transform.position, fieldofImpact);
}
void ChamarDropCoin()
{
float randDroop = Random.Range (minValue, maxValue);
if (randDroop <= DropCoin)
{
var cloneCoins = Instantiate(coin, transform.position, Quaternion.identity);
}
}
IEnumerator ColorDano()
{
SpriteInimigo.color = new Color(0.8773585f, 0.2193396f, 0.3094792f, 1f);
yield return new WaitForSeconds(0.2f);
SpriteInimigo.color = new Color(0.6226415f, 0.04992881f, 0.1299853f, 1f);
}
}
If anyone can help me I would be very grateful.