Quantcast
Channel: Questions in topic: "enemy"
Viewing all articles
Browse latest Browse all 1488

My enemy is destroyed instantly! unity 5.2 C# 2d

$
0
0
Hi, I have a player who has a gun and shoots. i also have and enemy. the problem is is that when my enemy spawns he instantly is destroyed. I only want him to be destroyed on collision with player/bullet. Here are my codes for: Player: using UnityEngine; using System.Collections; [System.Serializable] public class mover : MonoBehaviour // Use this for initialization { public float moveSpeed; public float noSpeed; public float jumpHeight; public float jumpSpeed; bool grounded; public float health; private Rigidbody rigid; public Transform player; void Start() { rigid = GetComponent(); } // Update is called once per frame void FixedUpdate() { if (Input.GetKey(KeyCode.RightArrow)) { GetComponent().velocity = new Vector2(+moveSpeed, GetComponent().velocity.y); var direction = 1; transform.localScale = new Vector3(direction, 1, 1); } if (Input.GetKey(KeyCode.LeftArrow)) { GetComponent().velocity = new Vector2(-moveSpeed, GetComponent().velocity.y); var direction = -1; transform.localScale = new Vector3(direction, 1, 1); } if (Input.GetKeyUp(KeyCode.LeftArrow)) { GetComponent().velocity = new Vector2(noSpeed, GetComponent().velocity.y); } if (Input.GetKeyUp(KeyCode.RightArrow)) { GetComponent().velocity = new Vector2(+noSpeed, GetComponent().velocity.y); } if (Input.GetKey(KeyCode.UpArrow) && grounded == true) { GetComponent().velocity = new Vector2(jumpSpeed, jumpHeight); grounded = false; } if (rigid.velocity.y == 0) { grounded = true; } } private void OnCollisionEnter(Collision collision) { if(collision.gameObject.tag == "Enemy") { Destroy(collision.gameObject); health -= 1; } if(health == 0) { Destroy(gameObject); } } } enemy: using UnityEngine; using System.Collections; public class groundEnemyBehavior : MonoBehaviour { public float moveSpeed; private float move = 1; public float nextFire; public float fireSpeed; public Transform BulletSpawn; public float fireRate; public GameObject shot; private GameObject cloneShot; void Start () { } void FixedUpdate () { if (move == 1) { GetComponent().velocity = new Vector2(-moveSpeed, GetComponent().velocity.y); } if (Time.time > nextFire) { nextFire = Time.time + fireRate; cloneShot = (GameObject)Instantiate(shot, BulletSpawn.position, BulletSpawn.rotation); cloneShot.GetComponent().velocity = new Vector3(-fireSpeed, 0); } } } and Shot Destroy: using UnityEngine; using System.Collections; public class DestroyShot : MonoBehaviour { private void OnCollisionEnter(Collision collision) { if (collision.gameObject.tag == "Enemy") { Destroy(collision.gameObject); Destroy(gameObject); } if (collision.gameObject.tag == "Boundary") { Destroy(gameObject); } } } i am not sure what i have done wrong? I believe it to be a coding error though. My only other problem is to get my shot to destroy when it hits the taged objects marked "boundary". Thank you to all who help!

Viewing all articles
Browse latest Browse all 1488

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>