Что-то действительно странное происходит с моей игрой. Когда персонаж хватает объект, он начинает бесконтрольно двигаться, а входные данные инвертируются. Например, если я нажимаю кнопку, заставляющую персонажа идти вправо, он идет влево и наоборот. Я не знаю, что происходит. У объекта есть коробчатый коллайдер. У игрока есть сферический коллайдер, который срабатывает.
Чем больше этот объект, тем быстрее персонаж движется. Я действительно не знаю. Я использую этот код, чтобы выбрать объект.
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;
}