GregoryMiller
Grünschnabel
Hallo Leute
Ich mache ein bisschen Puzzle-Spiel, aber ich kämpfe mit etwas. Meine boolesche Variable crossButtonClicked verhält sich seltsam. Ich initialisiere es am Anfang falsch und mache es wahr, wenn der Zeiger über einem Kreuz-Button ist, indem ich es im OnPointerEnter-Event wahr mache. Ich habe einige dieser beiden Bedingungen getestet, wenn (crossButtonClicked == true) und sonst if (crossButtonClicked = = false) gibt true zurück, was merkwürdig ist, da ich meinen Boolean nirgendwo außer im OnPointerEnter-Ereignis ändere.
Vielen Dank im Voraus
Ich mache ein bisschen Puzzle-Spiel, aber ich kämpfe mit etwas. Meine boolesche Variable crossButtonClicked verhält sich seltsam. Ich initialisiere es am Anfang falsch und mache es wahr, wenn der Zeiger über einem Kreuz-Button ist, indem ich es im OnPointerEnter-Event wahr mache. Ich habe einige dieser beiden Bedingungen getestet, wenn (crossButtonClicked == true) und sonst if (crossButtonClicked = = false) gibt true zurück, was merkwürdig ist, da ich meinen Boolean nirgendwo außer im OnPointerEnter-Ereignis ändere.
Vielen Dank im Voraus
Code:
public class EventHandler : MonoBehaviour,IPointerEnterHandler
{
private bool buttonClicked=false;
private bool crossButtonClicked = false;
private GameObject youWonPanel;
private Image image;
private GameObject youLostPanel;
void Awake()
{
youWonPanel = GameObject.Find("You Won");
youLostPanel = GameObject.Find("YouLostPanel");
}
void Start()
{
image = gameObject.GetComponent<Image>();
youWonPanel.SetActive(false);
youLostPanel.SetActive(false);
}
void Update()
{
for (int i = 0; i < Input.touchCount; i++)
{
Touch touch = Input.GetTouch(i);
if (touch.phase==TouchPhase.Moved)
{
if (buttonClicked == true)
{
image.color= Color.blue;
}
}
if (touch.phase == TouchPhase.Ended)
{
Debug.Log("touch phase ended " + touch.position);
//Debug.Log((Vector2)GameManager.starButtons[0].transform.position);
//Debug.Log((Vector2)GameManager.starButtons[1].transform.position);
float distance1 = Vector2.Distance(GameManager.starButtons[0].transform.position, touch.position);
float distance2 = Vector2.Distance(GameManager.starButtons[1].transform.position, touch.position);
Debug.Log("DIstance1 is " + distance1);
Debug.Log("Distance2 is " + distance2);
if (distance1 < 50f || distance2 < 50f)
{
if (crossButtonClicked == true)
{
youLostPanel.SetActive(true);
for (int j = 0; j < GameManager.temporaryCross.Length; j++)
{
if (GameManager.temporaryCross[j] != null)
{
GameManager.temporaryCross[j].SetActive(true);
}
}
}
else if(crossButtonClicked==false)
{
youWonPanel.SetActive(true);
Debug.Log(crossButtonClicked);
}
}
else
{
image.color = Color.white;
buttonClicked = false;
}
}
}
}
public void OnPointerEnter(PointerEventData eventData)
{
Debug.Log("Im on button " + gameObject.name);
if (eventData.pointerCurrentRaycast.gameObject != null)
{
for(int i = 0; i < GameManager.temporaryButtons.Length; i++)
{
if (eventData.pointerCurrentRaycast.gameObject.name == "CrossButtons")
{
Debug.Log("Pointer over crossButton");
crossButtonClicked = true;
}
}
Debug.Log("Mouse Over: " + eventData.pointerCurrentRaycast.gameObject.name);
}
buttonClicked = true;
}