how do i collide and kill the enemy while pressing space Unity 5 C#
using UnityEngine; using System.Collections;
public class PlayerMovement : MonoBehaviour {
 private Rigidbody2D rbody;
 private Animator anim;
 public bool isAttacking = false;
 // Use this for initialization
 void Start () {
     rbody = GetComponent<Rigidbody2D>();
     anim = GetComponent<Animator>();
 }
 
 // Update is called once per frame
 void Update () {
     Vector2 movement_vector = new Vector2(Input.GetAxisRaw("Horizontal") , Input.GetAxisRaw("Vertical"));
     //if not zero must be moving
     if (movement_vector != Vector2.zero)
     {
         anim.SetBool("isWalking", true);
         anim.SetFloat("input_x", movement_vector.x);
         anim.SetFloat("input_y", movement_vector.y);
     }
     else //sees if in idel or not changes anim
     {
         anim.SetBool("isWalking", false);
     }
     //movment by 1
     rbody.MovePosition(rbody.position + movement_vector * Time.deltaTime);
     //sets attack to true if space hit
     if (Input.GetKeyDown(KeyCode.Space))
     {
         isAttacking = true;
        
     }
     //Makes anim attack
     if (isAttacking == true)
     {
         anim.SetBool("isAttacking", true);
         isAttacking = false;
        
     }
     else
     {
         anim.SetBool("isAttacking", false);
     }
 }
 //checks if touch enemy and then if can attack then kill
 void OnTriggerEnter2D(Collider2D other)
 {
     if (other.gameObject.CompareTag("Enemy"))
     {
         if (isAttacking==true)
         {
             Destroy(other.gameObject);
         }
     }
 }
}//end
Answer by nick_bain · Dec 10, 2015 at 02:10 AM
@username, in the OnTriggerEnter2D() function, instead of:
if(other.gameobject.CompareTag("Enemy")){ //Do stuff }
Just use:
if(other.tag == "Enemy"){ //Do stuff }
Thank you but That didn't help i want to hit space and attack while i am touching the enemy to destroy it. But all this script does currently is i have to be attacking and moving into collision at the same time to destroy the enemy.
Answer by nick_bain · Dec 10, 2015 at 03:53 AM
Ok, so to do that:
- Make a new float called: enemyDistance ----Code>>>> public float enemyDistance 
- In Update(), put: enemyDistance=Vector3.Distance(enemy.transform.position,transform.position); 
- In OnTriggerEnter2D(), type in (mostly add a little bit more info): 
void OnTriggerEnter2D(Collider2D other) { if (other.tag == "Enemy") { if (isAttacking==true && enemyDistance <= 5) <<< If you want the distance to be closer or farther, then change the value 5. { Destroy(other.gameObject); } } }
i see how this could work but it didn't. i made some adjustments but ran into this error "Non-invocable member ' gameObject.tag' cannot be used like a method. "
$$anonymous$$y new code is Also thanks for trying to help me ^-^
using UnityEngine; using System.Collections;
public class Player$$anonymous$$ovement : $$anonymous$$onoBehaviour {
 private Rigidbody2D rbody;
 private Animator anim;
 public bool isAttacking = false;
 public float enemyDistance;
 public Rigidbody2D enemy;
 // Use this for initialization
 void Start () {
     rbody = GetComponent<Rigidbody2D>();
     anim = GetComponent<Animator>();
 }
 
 // Update is called once per frame
 void Update () {
     Vector2 movement_vector = new Vector2(Input.GetAxisRaw("Horizontal") , Input.GetAxisRaw("Vertical"));
     //if not zero must be moving
     if (movement_vector != Vector2.zero)
     {
         anim.SetBool("isWalking", true);
         anim.SetFloat("input_x", movement_vector.x);
         anim.SetFloat("input_y", movement_vector.y);
     }
     else //sees if in idel or not changes anim
     {
         anim.SetBool("isWalking", false);
     }
     //movment by 1
     rbody.$$anonymous$$ovePosition(rbody.position + movement_vector * Time.deltaTime);
     //sets attack to true if space hit
     if (Input.Get$$anonymous$$ey($$anonymous$$eyCode.Space))
     {
         isAttacking = true;
         Debug.Log("Attack");
     }
     //$$anonymous$$akes anim attack
     if (isAttacking == true)
     {
         anim.SetBool("isAttacking", true);
         isAttacking = false;
         Attack();
     }
     else
     {
         anim.SetBool("isAttacking", false);
     }
     enemyDistance = Vector3.Distance(enemy.transform.position, transform.position);
 }
 // checks if touch enemy and then if can attack then kill
 //void OnTriggerEnter2D(Collider2D other)
 //{
 //    {
 //        if (gameObject.tag == "Enemy")
 //        {
 //            Debug.Log("Touch");
 //            if (isAttacking == true && enemyDistance <= 0)
 //            {
 //                Debug.Log("Die");
 //                Destroy(other.gameObject);
 //            }
 //        }
 //    }
 //}
 public void Attack()
 {
     if (GetComponent<Collider2D>(gameObject.tag("Enemy"))) 
     {
         Debug.Log("Touch");
         if (isAttacking == true && enemyDistance<= 0)
         {
             Debug.Log("Die");
             Destroy(gameObject);
         }
     }
 }
}//end
Never $$anonymous$$d i just got it to work thank you for your help it means a lot.
Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
               
 
			 
                