Кнопка не вызывает метод OnPointerDown () - PullRequest
0 голосов
/ 19 июня 2019

Поэтому я решил изучить Unity, изменив игру Pacman tutorial на рабочем столе, ставшей игрой для Android.На данный момент я попытался заменить клавишу ввода с клавиши со стрелкой на кнопку пользовательского интерфейса в моем скрипте спрайта.Затем перетащите кнопку в поле ввода спрайта. вот изображение поля ввода на моем спрайте.

Сильфонный код, который должен выполняться при нажатии моей кнопки.Однако кнопка, кажется, не вызывает какой-либо метод.

if (rightButton.IsInvoking("OnPointerDown")){
                Debug.Log("OnPOinterDOwn() method is called");

Вот полный код моего спрайта:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class PacmanMove : MonoBehaviour {

    public float speed = 0.4f;
    Vector2 dest = Vector2.zero;

    public Button rightButton;
    public Button leftButton;
    public Button upButton;
    public Button downButton;

    // Use this for initialization
    void Start () {
        dest = transform.position;
    }

     //Update is called in fixed time interval
    void FixedUpdate() {
        //Move closer to Desstination
        Vector2 p = Vector2.MoveTowards(transform.position, dest, speed);
        GetComponent<Rigidbody2D>().MovePosition(p);

        //Check for input if not moving
        if ((Vector2)transform.position == dest) {
            if (Input.GetKey(KeyCode.UpArrow) && valid(Vector2.up))
                dest = (Vector2)transform.position + Vector2.up;
            if (Input.GetKey(KeyCode.RightArrow) && valid(Vector2.right))
                dest = (Vector2)transform.position + Vector2.right;
            if (Input.GetKey(KeyCode.DownArrow) && valid(-Vector2.up))
                dest = (Vector2)transform.position - Vector2.up;
            if (Input.GetKey(KeyCode.LeftArrow) && valid(-Vector2.right))
                dest = (Vector2)transform.position - Vector2.right;

            //Bellow code supposed to be trigger when my UI button is pressed
            if (rightButton.IsInvoking("OnPointerDown")){
                Debug.Log("OnPointerMethod() is called");
            }
        }

        // Animation Parameters
        Vector2 dir = dest - (Vector2)transform.position;
        GetComponent<Animator>().SetFloat("DirX", dir.x);
        GetComponent<Animator>().SetFloat("DirY", dir.y);
    }

    bool valid (Vector2 dir) {
        //Cast line from 'next to Pac-Man' to 'Pac-man'
        Vector2 pos = transform.position;
        RaycastHit2D hit = Physics2D.Linecast(pos + dir, pos);
        return (hit.collider == GetComponent<Collider2D>());
    }
}

Может ли кто-нибудь просветить меня, что мне не хватает?

1 Ответ

0 голосов
/ 24 июня 2019

Пройдя еще урок, я решил эту проблему. Оказывается, я должен вызвать Event Trigger на моей кнопке. Я также пишу другой скрипт, прикрепленный к кнопке, где он будет вызываться из Event Trigger, и устанавливаю логический вход для спрайта.

Я уточню подробнее моего среднего поста .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...