- Home /
Raycast on ui elements not working?
Hello fellow developers. I've been working on a card game for the past 5 days and im trying to work out the attacking of the cards (so cards can attack each other). I can select cards and now im trying to send out a raycast that from the mouse and if i hit a card and rightclick i will go through all the cards in the scene and then find the selected one ( there can only be one). And after that attack! But the raycast is not working and i dont know why, is it because of the ui? I thank you for your advice in advance. ~flux
This is attached to every card in the game. Every card also has a 'playcard' script NOTE that the debug is not printing
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class attackCard : MonoBehaviour {
GameObject[] allCards;
public void Update ()
{
RaycastHit2D hit = Physics2D.Raycast (Camera.main.ScreenToWorldPoint (Input.mousePosition), Vector2.zero);
if (hit.transform == this.transform.gameObject)
{
if (Input.GetMouseButtonDown (1))
{
Debug.Log (hit.transform.name);
for (int i = 0; i < allCards.Length; i++)
{
if (allCards [i].GetComponent<PlayCard> ().selected == true)
{
allCards [i].GetComponent<Info> ().currentHP -= this.GetComponent<Info> ().startAttack;
this.GetComponent<Info> ().currentHP -= allCards [i].GetComponent<Info> ().startAttack;
allCards [i].GetComponent<PlayCard> ().selected = false;
}
}
}
}
}
}
First, this line if (hit.transform == this.transform.gameObject)
compares a Transform
with a GameObject
. You might want to try comparing both Transform
s.
Second, do your cards have a collider?
Also, on a more "code cleaning" note, is there a reason why you raycast everyframe ins$$anonymous$$d of on mouseclick only? And could you manage inputs outside of your attack card and do one raycast only ins$$anonymous$$d of one per card?
Do you have a collider on the cards?
From https://docs.unity3d.com/ScriptReference/Physics2D.Raycast.html : "Casts a ray against colliders in the scene."
Your answer
Follow this Question
Related Questions
Raycast on ui elements not working? 0 Answers
2D Collider larger than specified 0 Answers
Detect only UI button click 3 Answers
Raycast on ui elements not working? 0 Answers
My text is invisible if I put it under the Content object under a Scroll View 1 Answer