- Home /
other enemy takes damage first when i hit other one
other enemy takes damage first when i hit other one until it die and just then the one thet i direct hit starting to take damage i use OnTriggerEnter on my shot script. does some one know why is that happens?
this is my shot script:
public class Shotscript : MonoBehaviour {
public Transform enemy;
public int minDist = 50;
public int maxDist = 35;
public bool isHere = false ;
public Enemypatrol enemyHit;
public float power = 100;
public float moveSpeed = 20;
// Use this for initialization
void Start ()
{
Invoke ("NoHitDestroy", 4);
enemyHit = GameObject.FindWithTag("Enemy").GetComponent<Enemypatrol> ();
enemy = GameObject.FindWithTag ("Enemy").transform;
}
// Update is called once per frame
void Update ()
{
if (isHere )
{
//GetComponent<NavMeshAgent> ().destination = enemy.position ;
}
if (isHere == false)
{
transform.Translate (Vector3.forward * moveSpeed * Time.deltaTime);
}
}
collosion
void OnTriggerEnter (Collider other)
{
if (other.gameObject.CompareTag ("ShotDict"))
{
isHere = true;
}
if (other.gameObject.CompareTag ("Enemy"))
{
enemyHit.totalLife = enemyHit.totalLife - power;
Destroy(gameObject);
}
}
void NoHitDestroy ()
{
Destroy (gameObject);
}
}
and this is my enemy script:
public class Enemypatrol : MonoBehaviour {
public Transform followPlayer;
private bool isHere ;
public int minDist = 50;
public int maxDist = 35;
public float totalLife = 1000;
public float life = 1000;
public Text lifeText;
public bool showText ;
public PlayerArttibutes playerExp;
// Use this for initialization
void Start ()
{
followPlayer = GameObject.FindWithTag ("Player").transform;
playerExp = GameObject.FindWithTag ("Player").GetComponent<PlayerArttibutes> ();
}
// Update is called once per frame
void Update ()
{
showText = false;
isHere = false;
transform.LookAt(followPlayer);
if (Vector3.Distance(followPlayer.position, transform.position) < minDist)
{
showText = true;
isHere = true;
}
if (showText)
{
lifeText.text = "life: " + totalLife.ToString();
}
if (isHere)
{
GetComponent<NavMeshAgent> ().destination = followPlayer.position ;
}
if (totalLife <= 0)
{
showText = false;
isHere = false;
Destroy(gameObject);
playerExp.heroExp += 150;
}
if (showText == false)
{
lifeText.text = " " ;
}
}
}
You are assigning enemyHit at Start() and not changing it to reflect the actual object hit in OnTriggerEnter so the enemy assigned at start will be affected by the line
enemyHit.totalLife = enemyHit.totalLife - power;
so how do i changing it to reflect the actual object hit in OnTriggerEnter ? this is what i dont know.
Your answer
Follow this Question
Related Questions
OnTriggerEnter2D with multiple objects 0 Answers
Trying to make the enemy fire 1 Answer
Is there a better method when creating a sword attack check? 1 Answer
how to kill an emeny? 1 Answer
OnTriggerEnter vs Position Checking 1 Answer