Персонаж движется неуправляемо, когда хватает предмет - PullRequest
0 голосов
/ 12 июня 2019

Что-то действительно странное происходит с моей игрой. Когда персонаж хватает объект, он начинает бесконтрольно двигаться, а входные данные инвертируются. Например, если я нажимаю кнопку, заставляющую персонажа идти вправо, он идет влево и наоборот. Я не знаю, что происходит. У объекта есть коробчатый коллайдер. У игрока есть сферический коллайдер, который срабатывает.

Чем больше этот объект, тем быстрее персонаж движется. Я действительно не знаю. Я использую этот код, чтобы выбрать объект.

private void OnTriggerStay(Collider other)
{
    if (other.tag == "PlayerCollider")
    {
        Player.PodeLargar = false;
    }

    if (Input.GetButtonDown("Jump") && other.tag == "PlayerCollider" && !Player.Segurando && !ItemEmCima)
    {
        StartCoroutine(PegarItem());
    }

    if (Input.GetButtonDown("Jump") && other.tag == "PlayerCollider" && Player.Segurando && !ItemEmCima)
    {
        StartCoroutine(Player.PosicionarItem(this.transform));
        ItemEmCima = true;
    }

    if (Input.GetButtonDown("Jump") && other.tag == "PlayerCollider" && Player.Segurando && !ItemEmCima /*|| other.gameObject.tag != "Espaço1.1" || other.gameObject.tag != "Incisivo"*/)
    {
        Player.PodeLargar = false;
    }

    if (Input.GetButtonDown("Jump") && other.tag == "PlayerCollider" && !Player.Segurando && ItemEmCima)
    {
        EmCima = this.transform.GetChild(1).gameObject;
        LugarErrado = false;
        StartCoroutine(PegarDaBancada(EmCima));
    }
}

private void OnTriggerExit(Collider other)
{
    if (other.tag == "PlayerCollider")
    {
        Player.PodeLargar = true;
    }
}

//----Coroutines---------------------------------------------------------
IEnumerator PegarItem()
{
    //Instantiate(DenteRespectivo, ColliderTrans.position, ColliderTrans.rotation, ColliderTrans.transform);
    yield return new WaitForSeconds(0.1f);
    Player.Segurando = true;
}

IEnumerator PegarDaBancada(GameObject Objeto)
{
    Objeto.transform.parent = ColliderTrans.transform;
    Objeto.transform.position = ColliderTrans.position;
    Objeto.transform.rotation = ColliderTrans.rotation;

    yield return new WaitForSeconds(0.1f);
    Player.Segurando = true;
    ItemEmCima = false;
}
...