0

I want to make a damage indicator for my online game, but there is an error in my code, can you check it?

Script 1

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class di_system : MonoBehaviour
{
    [Header("References")]

    [SerializeField] private DamageIndicator indicatorPrefab = null;
    [SerializeField] private RectTransform holder = null;
    [SerializeField] private Camera camera = null;
    [SerializeField] private Transform player = null;
   

    private Dictionary<Transform, DamageIndicator> Indicators = new Dictionary<Transform, DamageIndicator>();

    #region Delegates
    public static Action<Transform> CreateIndicator = delegate { };
    public static Func<Transform, bool> CheckIfObjectInSight = null;
    #endregion


    private void OnEnable()
    {
        CreateIndicator += Create;
        CheckIfObjectInSight += InSight;
    }

    private void OnDisable()
    {
        CreateIndicator -= Create;
        CheckIfObjectInSight -= InSight;
    }

    void Create(Transform target)
    {
        if (Indicators.ContainsKey(target))
        {
            Indicators[target].Restart();
            return;
        }
        DamageIndicator newIndicator = Instantiate(indicatorPrefab, holder);
        newIndicator.Register(target, player, new Action(() => { Indicators.Remove(target); }));
        Indicators.Add(target, newIndicator);
    }
    bool InSight(Transform t)
    {
        Vector3 screenPoint = camera.WorldToViewportPoint(t.position);
        return screenPoint.z > 0 && screenPoint.x > 0 && screenPoint.x < 1 && screenPoint.y > 0 && screenPoint.y < 1;
    }

}

Script 2

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Photon.Pun;

public class Health : MonoBehaviour
{

    public float health;
    public float maxHealth;
    public float HealSpeed;
    public Image healthBar;
    float lerpSpeed;

    public bool heal;
    public PhotonView PV;
    public Manager manager;
    public bool dead;
    public bool spawnShield;
    public float spawnShieldTime;
    public float SST;
    public GameObject SSUI;
    public GameObject SSUI2;

    public Text healthText;

    // Start is called before the first frame update
    void Start()
    {
        manager = GameObject.FindWithTag("Scripts").GetComponent<Manager>();
        spawnShield = true;
        SST = spawnShieldTime;
     
    }

    // Update is called once per frame
    void Update()
    {
        healthText.text = health.ToString("0");
        if (Input.anyKey && spawnShield)
        {
            StartCoroutine(waitt());
        }
        if (spawnShield)
        {
            health = maxHealth;
            SST -= 1f * Time.deltaTime;
            SSUI.SetActive(true);
            SSUI2.SetActive(true);
            SSUI2.GetComponent<Text>().text = SST.ToString("0.0");
        }
        else
        {
            SSUI.SetActive(false);
            SSUI2.SetActive(false);
        }

        if (SST <= 0)
        {
            PV.RPC("SpawnShieldOff", RpcTarget.All);
        }


       

    }

    [PunRPC]
    public void Damage(float damage)
    {
      
        Register();
        health -= damage;
        if (PV.IsMine)
        {
            if (health <= 0)
            { 
                Die();
            }
        }
        if (health <= 0)
        {
            dead = true;
        }

    }



    public void Die()
    {
        manager.deaths++;
        manager.cooldown();
        manager.Alive = false;
        PhotonNetwork.Destroy(gameObject);
    }

    [PunRPC]
    public void SpawnShieldOff()
    {
        spawnShield = false;
    }
     

    void Register()
    {
        if (!di_system.CheckIfObjectInSight(this.transform))
        {
            di_system.CreateIndicator(this.transform);
        }

    }

}

I want to make damage indicators for my multiplayer game. Can you help me?

I've been trying to solve this problem for a long time but I couldn't find anything.

No errors in the code, but it shows the rotation of the damaged player instead of the rotation of the damaging player

image

TanerSHN
  • 31
  • 2

0 Answers0