void Update() { if (SistemaPausa.pausado) { return; } if (ctrlVaiAtePonto.estaNoPonto) { if (!mesaObtida) { mesaObtida = true; GameObject gbjMesa = objsEspacos.ObterMaisProximo(); espacoMesa = gbjMesa.GetComponent <EspacoItem>(); Assert.IsNotNull(espacoMesa); espacoMesa.Abrigar(pedidoItem); Vector3 pontoOlhar = new Vector3( espacoMesa.transform.position.x, tr.position.y, espacoMesa.transform.position.z ); ctrlCliente.OlharPonto(pontoOlhar); // var rotY = new Vector3(0, tr.eulerAngles.y, 0); // tr.eulerAngles = rotY; } else if (!bolhaSolta && espacoMesa.Vazio()) { bolhaSolta = true; bolha.Exibir(); } } }
void Update() { if (SistemaPausa.pausado) { compVelocidade.direcao.x = 0; compVelocidade.direcao.y = 0; compVelocidade.direcao.z = 0; compVelocidade.velocidade = 0; return; } // rotação e direção float H = ctrl.ctrlValores.eixoHorizontal; float V = ctrl.ctrlValores.eixoVertical; direcao.x = 0; direcao.y = 0; direcao.z = 0; if ((H < -0.1f || H > 0.1f) || (V < -0.1f || V > 0.1f)) { if (H < -0.1f) { direcao.x = -1; } else if (H > 0.1f) { direcao.x = 1; } if (V < -0.1f) { direcao.z = -1; } else if (V > 0.1f) { direcao.z = 1; } direcao.Normalize(); Vector3 pontoOlhar = tr.position + direcao; Quaternion rotBkup = olhador.rotSuave.tr.rotation; tr.LookAt(pontoOlhar); olhador.alvo = pontoOlhar; olhador.rotSuave.tr.rotation = rotBkup; } else { olhador.alvo = tr.position + tr.forward; } // velocidade compVelocidade.direcao.x = 0; compVelocidade.direcao.y = 0; compVelocidade.direcao.z = Mathf.Ceil(direcao.magnitude); compVelocidade.velocidade = ctrl.velocidade; // pegar ou soltar item if (ctrl.ctrlValores.eixoAcao1) { if (!espacoItem.Vazio()) { Item item = espacoItem.Soltar(); // !espacoItem.Vazio() deve assegurar que item soltado não seja nula! Assert.IsNotNull(item); if (!listaDeEspacosItensProximas.Vazio()) { GameObject espacoGbj = listaDeEspacosItensProximas.ObterMaisProximo(); // !listaDeEspacosItensProximas.Vazio() deve assegurar que espacoGbj não seja nula! Assert.IsNotNull(espacoGbj); var espacoItemProximo = espacoGbj.GetComponent <EspacoItem>(); // espacoGbj deve conter um componente Espacoitem Assert.IsNotNull(espacoItemProximo); espacoItemProximo.Abrigar(item); } } else if (!listaDeItensProximos.Vazio()) { // a verificação de Vazio acima garante que ObterMaisProximo não retornará nula GameObject itemGbj = listaDeItensProximos.ObterMaisProximo(); // !listaDeItensProximos.Vazio() deve assegurar que itemGbj não seja nula Assert.IsNotNull(itemGbj); var item = itemGbj.GetComponent <Item>(); // itemGbj deve conter um componente Item Assert.IsNotNull(item); espacoItem.Abrigar(item); } } }