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.