I am trying to make a enemy attack my player but only deal 1damage per hit.
But everytime that the attack does hit my player it destroys him this is for a 2d side scroller game.
My Enemy2D.cs
public class Enemy2D : MonoBehaviour {
//Reference to our GameManager Script
public GameManager gameManager;
// Enemies Starting/End Positions
float startingPos;
float endPos;
// Units Enemy Moves Right
public float unitsToMove = 5;
//Enemies Movement Speed
public int moveSpeed = 2;
// Enemy Moving Right or Left
bool moveRight = true;
// Enemies Health
int enemyHealth = 1;
// Types of Enemies
public bool basicEnemy;
public bool advancedEnemy;
public bool BossEnemy;
void Awake()
{
// On Load Gets Enemy Starting X
startingPos = transform.position.x;
// ON LOAD GETS OUR ENEMIES END POS BY ADDING THE UNITS TO THE STARTING POS
endPos = startingPos + unitsToMove;
if (basicEnemy) {
enemyHealth = 3;
}
if (advancedEnemy) {
enemyHealth = 6;
}
if (BossEnemy) {
enemyHealth = 25;
}
}
void Update()
{
if (moveRight){
rigidbody.position += Vector3.right * moveSpeed * Time.deltaTime;
}
if (rigidbody.position.x >= endPos){
moveRight = false;
}
if (!moveRight){
rigidbody.position -= Vector3.right * moveSpeed * Time.deltaTime;
}
if (rigidbody.position.x <= startingPos){
moveRight = true;
}
}
// Enemy Damage Value
public int damageVaule = 1;
void OnTriggerEnter(Collider col){
if (col.gameObject.tag == “Player”) {
gameManager.SendMessage (“PlayerDamaged”, damageVaule, SendMessageOptions.DontRequireReceiver);
gameManager.controller2d.SendMessage (“TakenDamage”, SendMessageOptions.DontRequireReceiver);
}
}
// Emey Taking Damage
void EnemyDamaged(int damage){
if (enemyHealth > 0){
enemyHealth -= damage;
}
if (enemyHealth <= 0){
enemyHealth = 0;
Destroy (gameObject);
gameManager.curEXP += 10;
}
}
//Shows That we have takenDamage
float takenDamage = 0.2f;
public IEnumerator TakenDamage(){
renderer.enabled = false;
yield return new WaitForSeconds(takenDamage);
renderer.enabled = true ;
yield return new WaitForSeconds(takenDamage);
renderer.enabled = false;
yield return new WaitForSeconds(takenDamage);
renderer.enabled = true;
yield return new WaitForSeconds(takenDamage);
renderer.enabled = false;
yield return new WaitForSeconds(takenDamage);
renderer.enabled = true;
yield return new WaitForSeconds(takenDamage);
}
}
Shooting Script:
public class BossShooting : MonoBehaviour {
//Reference to our GameManager Script
public GameManager gameManager;
public int damageVaule = 1;
public Rigidbody bulletPrefab;
float coolDown;
public float xValue = -.75f;
// Update is called once per frame
void Update()
{
if (Time.time >= coolDown)
{
Fire();
}
}
void Fire()
{
// This INSTANTIATES BULLET FROM THE ENEMY POSITION
//Rigidbody bPrefb = Instantiate(bulletPrefab;transform.position,Quaternion.identity) as Rigidbody;
// INSTANTIATE FROM PLAYER + X POSITION
Rigidbody bPrefab = Instantiate(bulletPrefab, new Vector3(transform.position.x + xValue, transform.position.y, transform.position.z), Quaternion.identity) as Rigidbody;
bPrefab.rigidbody.AddForce (Vector3.left * 300);
coolDown = Time.time + Random.Range (3, 6);
}
}
my Bullet Script:
public class EnemyBullet : MonoBehaviour {
GameManager gameManager;
public int damageVaule = 1;
void OnBecameInvisible()
{
Destroy (gameObject);
}
void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == “Player”)
{
Debug.Log (“we Have Hit The Player”);
// The Bullet Destroy our Player
Destroy (other.gameObject);
// Destroy our bullet
Destroy(gameObject);
}
}
void FixedUpdate(){
Destroy (gameObject, .5f);
}
}