- Home /
Target touching enemy collision
I can't figure out how to make a target block (isTrigger collider) that is attached to my character detect if it is touching an enemy(rigidbody with an attached isTrigger collider), and if so destroy it with the press of a button. I've tried OnTriggerStay but it doesn't exactly work. Here's what I have so far
function OnTriggerStay ( other : Collider ) //Rigidbody a Character Controller must be on the the target enemy for this to work
{
if (other.gameObject.tag == "enemy" && Input.GetButton("B"))
{
print ("Touching enemy");
}
if(other.gameObject.tag == "item" && Input.GetButton("B"))
{
print("I picked up an item");
}
}
Please help!
Answer by MilkX5 · Mar 09, 2013 at 01:12 AM
Nevermind I fixed my own problem after 5 days For those who need reference, this is my final result
var player : Transform;
enum TargetTouch
{
none = 0,
item = 1,
enemy = 2
}
var targetState = TargetTouch.none;
var changeArea : boolean = false;
var canAttack : boolean = false;
var canPickup : boolean = false;
var otherObj : GameObject;
var kill : boolean = false;
function Update ()
{
var playDir = player.GetComponent("1P Attack");
kill = false;
if ( changeArea )
{
SetTarget();
}
if (canAttack)
{
if(Input.GetButtonDown("B"))
{
Destroy(otherObj);
}
}
if (canPickup)
{
if(Input.GetButton("A"))
{
Destroy(otherObj);
}
}
/*if (playDir.direction == 0) //no buttons
{
transform.position = player.transform.position;
}*/
if ( playDir.direction == 1) //north
{
transform.position.x = player.transform.position.x;
transform.position.y = player.transform.position.y + 1.1;
}
if ( playDir.direction == 2) //east
{
transform.position.y = player.transform.position.y;
transform.position.x = player.transform.position.x + 1.1;
}
if ( playDir.direction == 3) //south
{
transform.position.x = player.transform.position.x;
transform.position.y = player.transform.position.y - 1.1;
}
if ( playDir.direction == 4) //west
{
transform.position.y = player.transform.position.y;
transform.position.x = player.transform.position.x - 1.1;
}
}
function OnTriggerEnter ( other : Collider ) //Rigidbody or a Character Controller must be on the the target enemy for this to work
{
if (other.tag == "enemy" )//&& Input.GetButton("B"))
{
otherObj = other.gameObject;
changeArea = true;
print ("Touching enemy");
targetState = TargetTouch.enemy;
}
if(other.tag == "item" )//&& Input.GetButton("A"))
{
otherObj = other.gameObject;
changeArea = true;
print("I picked up an item");
targetState = TargetTouch.item;
}
}
function OnTriggerExit ( other : Collider )
{
print ("nothing");
otherObj = null;
changeArea = true;
targetState = TargetTouch.none;
changeArea = false;
}
function SetTarget ()
{
switch ( targetState )
{
case TargetTouch.none :
canAttack = false;
canPickup = false;
changeArea = false;
break;
case TargetTouch.item :
canPickup = true;
canAttack = true;
changeArea = false;
break;
case TargetTouch.enemy :
canPickup = false;
canAttack = true;
changeArea = false;
break;
}
}
function Kill ( GameObject )
{
kill = true;
}
Your answer
Follow this Question
Related Questions
Collider to Delete Object 1 Answer
Trigger Colission not only works sometimes 1 Answer
How do I make colliders collide when Tİme Scale is zero? 1 Answer
Box mechanic: Is it possible to know when the box is closed on all margins? 1 Answer
Temporarily ignore collisions between player and enemies 2 Answers