- Home /
Shooting Damage Help
I have been following the BergZergArcade hack and slash tutorial which has shown me enemy health scripts and how I can take damage of until it dies but this only happens when I'm up close to my enemy and I can take damage off it until I turn more than 90 degrees either side of it. Whereas I want it to take damage off when I shoot it or when a sphere collides with it (my bullet). Can anyone help me with this? This is the script.
using UnityEngine;
using System.Collections;
public class PlayerAttack : MonoBehaviour { public GameObject target; public float attackTimer; public float coolDown;
// Use this for initialization
void Start () {
attackTimer = 0;
coolDown = 0.75f;
}
// Update is called once per frame
void Update () {
if(attackTimer > 0)
attackTimer -= Time.deltaTime;
if(attackTimer < 0)
attackTimer = 0;
if(Input.GetButtonDown("Fire1")) {
if(attackTimer == 0) {
Attack();
attackTimer = coolDown;
}
}
}
private void Attack() {
float distance = Vector3.Distance(target.transform.position, transform.position);
Vector3 dir = (target.transform.position - transform.position).normalized;
float direction = Vector3.Dot(dir, transform.forward);
Debug.Log(direction);
if(distance < 2.5f) {
if(direction > 0) {
EnemyHealth eh = (EnemyHealth)target.GetComponent("EnemyHealth");
eh.AddjustCurrentHealth(-10);
}
}
}
}
Answer by matthew_tavares1 · Oct 04, 2011 at 02:01 AM
public Rigidbody bullet;
public Transform muzzle;
public GameObject target;
You'll have to create bullet as a prefab in order for you to be able to excess it without having to place them all inside your scene. For your muzzle create an enemy game object and place it in front of where you want the bullets to come out from, just make sure it's out inside or touching an object, just slightly in front of it.
public void Update()
{
if (Input.GetMouseButtonDown(0))
{
Rigidbody b = GameObject.Instantiate(bullet, muzzle.position, muzzle.rotation) as Rigidbody;
b.AddForce(1000 * b.transform.forward); //here is where you'll apply the force behind the bullet, just change 1000 to whatever value you want.
}
}
private void OnCollisionEnter(Collision Hit)
{
if (Hit.gameObject.tag == "Enemy")
{
Hit.gameObject.GetComponent<EnemyHealth>().AddjustCurrentHealth(-5);
}
GameObject.Destroy(gameObject);
}
And here it's causing damage to the enemy's health and destroying your bullets when the come in contact with other objects.
do I add the two parts of script together? because I have an error saying "A namespace can only contain types and namespace declarations" any idea?
on both of the scripts there's an error saying "A namespace can only contain types and namespace declarations" I don't know what this means can you help?
Your answer
Follow this Question
Related Questions
Enemy Follow Script Help 2 Answers
Stay Back! 2 Answers
Enemy's wont die if spawned 1 Answer
Enemy Attraction/Aggro 1 Answer
AI Enemy script 1 Answer