есть 3 объекта с коллайдером и включенным триггером.
на одном(onHit) висит скрипт
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class onHit : MonoBehaviour
{
public float damage;
public float damageRate;
float nextDamage;
void Start()
{
nextDamage = 0f;
}
void Update()
{
}
void OnTriggerEnter2D(Collider2D other)
{
if (other.tag == "Enemy" && nextDamage < Time.time)
{
enemyHealth theEnemyHealth = other.gameObject.GetComponent<enemyHealth>();
theEnemyHealth.addDamage(damage);
Debug.Log(transform.name + " наносит " + damage + " ед. урона.");
nextDamage = Time.time + damageRate;
}
}
}
using System.Collections;
using System.Collections.Generic;
public class onHit : MonoBehaviour
{
public float damage;
public float damageRate;
float nextDamage;
void Start()
{
nextDamage = 0f;
}
void Update()
{
}
void OnTriggerEnter2D(Collider2D other)
{
if (other.tag == "Enemy" && nextDamage < Time.time)
{
enemyHealth theEnemyHealth = other.gameObject.GetComponent<enemyHealth>();
theEnemyHealth.addDamage(damage);
Debug.Log(transform.name + " наносит " + damage + " ед. урона.");
nextDamage = Time.time + damageRate;
}
}
}
на двух других(enemyHealth)
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class enemyHealth : MonoBehaviour
{
private PlayerEXP thePlayerExp;
public int expToGive;
public float enemyMaxHeath;
public GameObject enemyDeathFX;
public Slider enemySlider;
float currentHeath;
void Start()
{
thePlayerExp = FindObjectOfType<PlayerEXP>();
currentHeath = enemyMaxHeath;
enemySlider.maxValue = currentHeath;
enemySlider.value = currentHeath;
}
void Update()
{
}
public void addDamage(float damage)
{
currentHeath -= damage;
enemySlider.value = currentHeath;
if (currentHeath <= 0) makeDead();
}
void makeDead()
{
thePlayerExp.AddExp(expToGive);
Destroy(gameObject);
Instantiate(enemyDeathFX, transform.position, transform.rotation);
}
}
using System.Collections;
using UnityEngine.UI;
public class enemyHealth : MonoBehaviour
{
private PlayerEXP thePlayerExp;
public int expToGive;
public float enemyMaxHeath;
public GameObject enemyDeathFX;
public Slider enemySlider;
float currentHeath;
void Start()
{
thePlayerExp = FindObjectOfType<PlayerEXP>();
currentHeath = enemyMaxHeath;
enemySlider.maxValue = currentHeath;
enemySlider.value = currentHeath;
}
void Update()
{
}
public void addDamage(float damage)
{
currentHeath -= damage;
enemySlider.value = currentHeath;
if (currentHeath <= 0) makeDead();
}
void makeDead()
{
thePlayerExp.AddExp(expToGive);
Destroy(gameObject);
Instantiate(enemyDeathFX, transform.position, transform.rotation);
}
}
оба enemyHealth находятся в зоне действия onHit, но проблема в том что onHit наносит урон только одному из enemyHealth, а нужно что бы наносил обоим сразу