- Home /
BoxCollider Overlap OnTriggerEnter Problem
About the game and the problem so i made a fun 2 sidescrolling game where you can shoot bullets when pressing X then the bullet hits the enemy it will dmg him and destroy it self the problem is if 2 enemies are Directly on top of each other they will both take dmg after spending some hours trying to figure it out and trying out stuff i tryed to google it and didnt find anything so i was wondering if anyone could help me Code, keywords, links anything will help me out
this is the code for the Bullet
public float speed;
private PlayerController player;
private Rigidbody myrigidbody;
public int DamageToGive;
// Use this for initialization
void Start () {
player = FindObjectOfType<PlayerController> ();
if (player.transform.localScale.x > 0)
{
speed = -speed;
transform.localScale = new Vector3 (-1f, 1f, 1f);
}
}
// Update is called once per frame
void Update () {
GetComponent<Rigidbody> ().velocity = new Vector3 (speed, GetComponent<Rigidbody> ().velocity.y, 0f);
}
void OnTriggerEnter(Collider other)
{
if (other.tag == "Enemy")
{
//Instantiate(enemyDeathEffect, other.transform.position, other.transform.rotation);
//Destroy (other.gameObject);
//ScoreManager.add_points(point_kill);
other.GetComponent<EnemyHealthManager>().giveDamage(DamageToGive);
}
Destroy (gameObject);
}
What the code does so in the start function this script i set the speed to - if the player is facing the other way so the bullet will fly the right way in the Update i tell the bullet to move in the X axis OnTriggerEnter i ask if the target it collided with is an enemy if its an enemy i call my dmg script and dmg the enemy and if the bullet hits anythign with an collider it will destroy itself
Answer by lloladin · May 13, 2015 at 07:34 PM
Solved it while trying to figure out how to hit multiple enmies :D here is a sample of the code if anyone had the same problem public float speed; private PlayerController player; private Rigidbody myrigidbody;
public int DamageToGive;
public int EnenmyAmount;
private int CurrentEnemyAmount;
public bool BulletOnEnemy;
// Use this for initialization
void Start () {
player = FindObjectOfType<PlayerController> ();
if (player.transform.localScale.x > 0)
{
speed = -speed;
transform.localScale = new Vector3 (-1f, 1f, 1f);
}
}
// Update is called once per frame
void Update () {
GetComponent<Rigidbody> ().velocity = new Vector3 (speed, GetComponent<Rigidbody> ().velocity.y, 0f);
if (CurrentEnemyAmount == EnenmyAmount)
{
Destroy(gameObject);
}
}
void OnTriggerEnter(Collider other)
{
if (other.tag == "Enemy")
{
if (!BulletOnEnemy)
{
CurrentEnemyAmount++;
other.GetComponent<EnemyHealthManager>().giveDamage(DamageToGive);
BulletOnEnemy = true;
}
}
if (other.tag == "Wall")
{
Destroy (gameObject);
}
}
void OnTriggerExit(Collider other)
{
BulletOnEnemy = false;
}
Your answer
Follow this Question
Related Questions
How to make gameObject make only one collision 1 Answer
How to have a score counter increment in OnTriggerEnter 1 Answer
onEnterCollider returns Collider 1 Answer
Distribute terrain in zones 3 Answers
How Does OnTriggerEnter() Work? 0 Answers