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!
↧