Here is the code from my player controller:
void Update()
{
if (gm.paused) return;
Fire1 = CrossPlatformInputManager.GetButton("Fire1");
if (Fire1 && !isMoving && gm.playerTurn && !gm.isResting && !gm.isBlocking && gm.stamina > 0)
{
Interact();
}
if (inCollision) {
destinationPosition = transform.position;
inCollision = false;
}
MoveObject();
}
And Interact function:
void Interact()
{
Ray ray = Camera.main.ScreenPointToRay(CrossPlatformInputManager.mousePosition);
mouseInput = new Vector3 (ray.origin.x, ray.origin.y, transform.position.z);
RaycastHit2D hit = Physics2D.Raycast(ray.origin, ray.direction);
if ((!hit)) {
//Debug.Log ("Hit nothing");
return;
}
switch (hit.transform.tag.ToString())
{
case "Boss":
if (!hit.collider.isTrigger && inHitbox && gm.bossHp > 0) {
Debug.Log ("Hit Boss! " + hit.transform.tag);
if (gm.actions < 2) {
gm.bossHp -= 20;
gm.stamina -= 100;
gm.actions++;
}
} else if (hit.collider.isTrigger) {
Debug.Log ("Hit Hitbox! " + hit.transform.tag);
if (gm.actions < 2) {
destinationPosition = mouseInput;
gm.actions++;
}
}
break;
case "Arena":
Debug.Log("Hit something: " + hit.transform.tag);
if (gm.actions < 2) {
destinationPosition = mouseInput;
gm.actions++;
}
break;
default:
Debug.Log ("Hit Unknown");
break;
}
}
What I want to do is that if I click boss it will perform damage action once (right now it just spams it with Update rate, so multiple times in a mouse click). Any workaround for this?