- Home /
Plz help I have a problem in my damage popup
I have a gun script and a target script and a damagepopup script. I want to get the damage popup when I hit something with my raycast and I want to get the damage on the popup. I also have damage variable in my gun script plz help.,Ok I have a script which is a damage popup script and a gun script and I have a variable in my gun script which is damage. I want to make a damage popup when I hit something with raycast which is in my gun script and I want to be the damage popup of my damage plz hep.
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class Target : MonoBehaviour { public float health = 50f; public void TakeDamage(float amount)
{
health -= amount;
if(health <= 0f)
{
Die();
}
}
void Die()
{
Destroy(gameObject);
}
}
using System.Collections; using System.Collections.Generic; using UnityEngine; using TMPro; using CodeMonkey.Utils;
public class DamagePopup : MonoBehaviour { public static DamagePopup Create (Vector3 position, int DamageAmount, bool isCriticslHit) { Transform DamagePopupTransform = Instantiate(GameAsset.i.pfDamagePopup, Vector3.zero, Quaternion.identity);
DamagePopup damagepopup = DamagePopupTransform.GetComponent<DamagePopup>();
damagepopup.Setup(DamageAmount, isCriticslHit);
return damagepopup;
}
private static int sortingOrder;
private const float DISAPPEAR_TIMER_MAX = 1f;
private TextMeshPro textmesh;
private float DisappearTimer;
private Color TextColor;
private Vector3 moveVector;
private void Awake()
{
textmesh = transform.GetComponent<TextMeshPro>();
}
public void Setup(int DamageAmount, bool isCriticalHit)
{
textmesh.SetText(DamageAmount.ToString());
if (!isCriticalHit)
{
//NormalHit
textmesh.fontSize = 36;
TextColor = UtilsClass.GetColorFromString("FFF600");
} else
{
//CriticalHit
textmesh.fontSize = 45;
TextColor = UtilsClass.GetColorFromString("FF0010");
}
textmesh.color = TextColor;
DisappearTimer = DISAPPEAR_TIMER_MAX;
sortingOrder++;
textmesh.sortingOrder = sortingOrder;
moveVector = new Vector3(1, 1) * 30f;
}
private void Update()
{
float MoveYSpeed = 20f;
transform.position += moveVector * Time.deltaTime;
moveVector -= moveVector * 8f * Time.deltaTime;
if(DisappearTimer > DISAPPEAR_TIMER_MAX * .5f)
{
//First Half Of the Popup Lifetime
float increaseScaleAmount = 1f;
transform.localScale += Vector3.one * increaseScaleAmount * Time.deltaTime;
}
else
{
//Second Half of the Popup Lifetime
float decreaseScaleAmount = 1f;
transform.localScale -= Vector3.one * decreaseScaleAmount * Time.deltaTime;
}
DisappearTimer -= Time.deltaTime;
if(DisappearTimer < 0)
{
//Start Disappearing
float DisappearSpeed = 3f;
TextColor.a -= DisappearSpeed * Time.deltaTime;
textmesh.color = TextColor;
if(TextColor.a < 0)
{
Destroy(gameObject);
}
}
}
}
using UnityEngine;
public class Gun : MonoBehaviour {
public float damage = 10f;
public float range = 100f;
public float FireRate = 15f;
public float impactForce = 30f;
public Camera fpscam;
public ParticleSystem muzzleflash;
public GameObject impacteffect;
private float NextTimeToFire = 0f;
// Update is called once per frame
void Update()
{
if (Input.GetButton("Fire1") && Time.time >= NextTimeToFire)
{
NextTimeToFire = Time.time + 1f / FireRate;
{
Shoot();
}
}
}
void Shoot()
{
muzzleflash.Play();
RaycastHit hit;
if (Physics.Raycast(fpscam.transform.position, fpscam.transform.forward, out hit, range))
{
Debug.Log(hit.transform.name);
Target target = hit.transform.GetComponent<Target>();
if(target != null)
{
target.TakeDamage(damage);
}
if (hit.rigidbody != null)
{
hit.rigidbody.AddForce(-hit.normal * impactForce);
}
GameObject impactGO = Instantiate(impacteffect, hit.point, Quaternion.LookRotation(hit.normal));
Destroy(impactGO, 2f);
}
}
},using System.Collections; using System.Collections.Generic; using UnityEngine; using TMPro; using CodeMonkey.Utils;
public class DamagePopup : MonoBehaviour { public static DamagePopup Create (Vector3 position, int DamageAmount, bool isCriticslHit) { Transform DamagePopupTransform = Instantiate(GameAsset.i.pfDamagePopup, Vector3.zero, Quaternion.identity);
DamagePopup damagepopup = DamagePopupTransform.GetComponent<DamagePopup>();
damagepopup.Setup(DamageAmount, isCriticslHit);
return damagepopup;
}
private static int sortingOrder;
private const float DISAPPEAR_TIMER_MAX = 1f;
private TextMeshPro textmesh;
private float DisappearTimer;
private Color TextColor;
private Vector3 moveVector;
private void Awake()
{
textmesh = transform.GetComponent<TextMeshPro>();
}
public void Setup(int DamageAmount, bool isCriticalHit)
{
textmesh.SetText(DamageAmount.ToString());
if (!isCriticalHit)
{
//NormalHit
textmesh.fontSize = 36;
TextColor = UtilsClass.GetColorFromString("FFF600");
} else
{
//CriticalHit
textmesh.fontSize = 45;
TextColor = UtilsClass.GetColorFromString("FF0010");
}
textmesh.color = TextColor;
DisappearTimer = DISAPPEAR_TIMER_MAX;
sortingOrder++;
textmesh.sortingOrder = sortingOrder;
moveVector = new Vector3(1, 1) * 30f;
}
private void Update()
{
float MoveYSpeed = 20f;
transform.position += moveVector * Time.deltaTime;
moveVector -= moveVector * 8f * Time.deltaTime;
if(DisappearTimer > DISAPPEAR_TIMER_MAX * .5f)
{
//First Half Of the Popup Lifetime
float increaseScaleAmount = 1f;
transform.localScale += Vector3.one * increaseScaleAmount * Time.deltaTime;
}
else
{
//Second Half of the Popup Lifetime
float decreaseScaleAmount = 1f;
transform.localScale -= Vector3.one * decreaseScaleAmount * Time.deltaTime;
}
DisappearTimer -= Time.deltaTime;
if(DisappearTimer < 0)
{
//Start Disappearing
float DisappearSpeed = 3f;
TextColor.a -= DisappearSpeed * Time.deltaTime;
textmesh.color = TextColor;
if(TextColor.a < 0)
{
Destroy(gameObject);
}
}
}
}
using UnityEngine;
public class Gun : MonoBehaviour {
public float damage = 10f;
public float range = 100f;
public float FireRate = 15f;
public float impactForce = 30f;
public Camera fpscam;
public ParticleSystem muzzleflash;
public GameObject impacteffect;
private float NextTimeToFire = 0f;
// Update is called once per frame
void Update()
{
if (Input.GetButton("Fire1") && Time.time >= NextTimeToFire)
{
NextTimeToFire = Time.time + 1f / FireRate;
{
Shoot();
}
}
}
void Shoot()
{
muzzleflash.Play();
RaycastHit hit;
if (Physics.Raycast(fpscam.transform.position, fpscam.transform.forward, out hit, range))
{
Debug.Log(hit.transform.name);
Target target = hit.transform.GetComponent<Target>();
if(target != null)
{
target.TakeDamage(damage);
}
if (hit.rigidbody != null)
{
hit.rigidbody.AddForce(-hit.normal * impactForce);
}
GameObject impactGO = Instantiate(impacteffect, hit.point, Quaternion.LookRotation(hit.normal));
Destroy(impactGO, 2f);
}
}
}
using System.Collections; using System.Collections.Generic; using UnityEngine; using TMPro; using CodeMonkey.Utils;
public class Target : MonoBehaviour { public float health = 50f; public void TakeDamage(float amount)
{
health -= amount;
if(health <= 0f)
{
Die();
}
}
void Die()
{
Destroy(gameObject);
}
}