Скрипт сохраняет значения Vector2 после перезагрузки сцены.Установка новых значений X, Y в функциях Awake () или Start () не работает после второй загрузки - PullRequest
0 голосов
/ 11 февраля 2019

Я делаю игру для Android / IOS и использую Vector2 для перемещения игрока по диагонали, нажимая / нажимая две кнопки (влево, вправо).Моя проблема в том, что после того, как игрок сталкивается с объектом и умирает, и сцена перезагружается.Значения X, Y равны значениям до перезагрузки, но я хочу, чтобы они были 0, 0.

Я возился с этими тремя сценариями ниже.Это может быть связано с тем, что объект игрока становится неактивным.(Извините, если вы публикуете сообщения в первый раз)

// из скрипта движения игрока

private void Awake()
{
    moveChange = new Vector2(0.0f, 0.0f);
}

void Start()
{
    rb = GetComponent<Rigidbody2D>();
}

void FixedUpdate()
{
    Vector3 movement = moveChange * speed * Time.deltaTime;
    rb.MovePosition(transform.position + movement);
}

public void ClickR()
{
     moveChange = new Vector2(0.5f, 1.0f);
}

public void ClickL()
{
     moveChange = new Vector2(-0.5f, 1.0f);
}

// из скрипта столкновения

private void OnTriggerEnter2D(Collider2D other)
{
    GameObject e = Instantiate(explosion) as GameObject;
    e.transform.position = transform.position;
    this.gameObject.SetActive(false); 
}

// из скрипта перезагрузки

void Update()
{
    if (GameObject.FindWithTag("Player") == null)
    {
        timer += Time.deltaTime;
        if (timer > beforeLoading)
        {
            Scene scene = SceneManager.GetActiveScene();
            SceneManager.LoadScene(scene.name);
        }
    }
}

Таким образом, объект игрока не перемещается при первой загрузке сцены, как предполагалось, но мгновенно начинает двигаться влево / вправо в зависимости от того, какая кнопка была нажата / нажата до перезагрузки сцены.Я пытался установить значения X, Y в 0f, 0f в функциях Awake () / Start (), а также в OnTriggerEnter, но это не сработало.

Одна вещь, которую я заметил, это то, что если я коснусь где-нибудь еще на экране (android), кроме кнопок, до перезагрузки уровня, игрок не будет двигаться, а X, Y будет равно 0, 0.

1 Ответ

0 голосов
/ 11 февраля 2019

Это не имеет ничего общего с кодом.Я изменил «Тип события» в скрипте «Event Trigger» на кнопках на «PointerDown» вместо «PointerEnter», и теперь он работает так, как задумано.Так просто.

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