Problemas com o transform.position com GameObjects 3D
Página 1 de 1
Problemas com o transform.position com GameObjects 3D
Olá pessoal!
Eu frequento pouco esse forum, então caso eu estiver postando essa duvida de alguma forma "errada", peço desculpas antecipadamente.
Então, eu preciso implementar um protótipo de um jogo em 3D replicando as mecânicas do jogo Draw Climber.
Para quem não conhece o jogo é este:
https://www.youtube.com/watch?v=AkHbxeB127Y&ab_channel=AndroidMinutes-NewAndroidGamesEveryday
Bem, todos meus projetos anteriores foram feitos em 2D, e este é meu primeiro projeto em 3D. Até o momento eu estive progredindo bem, porem fiquei enroscado em um certo ponto.
Eu consegui com a ajuda de tutoriais, implementar esse mecânica de "desenhar uma linha em 2D", e instanciar essa linha em 3D. Na pratica, ao usar o mouse para desenhar a linha clicando em um painel, é gerado um LineRender, formando um "risco". E em cada "pedaço da linha" é gerado um pequeno cubo. No final ao soltar o clique do mouse eu tenho um objeto pai (a linha), que contem todos os cubos pequenos, que "formam" a imagem da linha (parecido com o que jogo Draw Climber faz). O meu problema começa quando o objetoGerado não "vai até a posição do player".
Minha duvida é:
Como eu posso dar um "teleport" nesse objeto novo gerado ao desenhar um risco com o mouse, para a mesma posição de um objeto filho do objeto player?
No caso só para esclarecer melhor, eu já tentei praticamente de tudo kkkk. Eu já tentei:
- transform.position = objetoFilhoPlayer.transform.position;
- transform.position = new Vector3 (coordenadas x,y,z do objetoFilhoPlayer);
- tentei setar o objetoFilhoPlayer como pai do objeto gerado, e depois usei new Vector3 (0,0,0);
- tentei criar objetos novos para ser como objetos pai do objeto gerado e depois tentei setar a posição com os métodos anteriores.
- tentei inclusive, simplesmente setar a posição do objeto gerado para a posição do player e mesmo assim não consegui.
Perdi a conta de quantas coisas diferentes e pesquisas que eu fiz para resolver isso.
O resultado sempre é o objetoGerado tomar uma posição totalmente diferente de onde eu planejava que ele ficasse.
Um ponto que percebi foi que o objetoGerado, tem em seu transform uma escala "local" (pq ele sempre nasce no 0,0,0). Por isso tentei usar transform.TransformPoint e InverseTransformPoint, mas sem sucesso (embora eu não consegui entender a utilização deles corretamente me orientando pela documentação oficial da Unity).
Enfim, alguém consegue me ajudar no ponto que estou errando?
Não sei se será necessário colocar meu código aqui (uma vez que tentei explicar detalhadamente o que meu código faz), mas caso seja eu posto aqui depois sem problemas.
Agradeço a atenção de vocês!
Eu frequento pouco esse forum, então caso eu estiver postando essa duvida de alguma forma "errada", peço desculpas antecipadamente.
Então, eu preciso implementar um protótipo de um jogo em 3D replicando as mecânicas do jogo Draw Climber.
Para quem não conhece o jogo é este:
https://www.youtube.com/watch?v=AkHbxeB127Y&ab_channel=AndroidMinutes-NewAndroidGamesEveryday
Bem, todos meus projetos anteriores foram feitos em 2D, e este é meu primeiro projeto em 3D. Até o momento eu estive progredindo bem, porem fiquei enroscado em um certo ponto.
Eu consegui com a ajuda de tutoriais, implementar esse mecânica de "desenhar uma linha em 2D", e instanciar essa linha em 3D. Na pratica, ao usar o mouse para desenhar a linha clicando em um painel, é gerado um LineRender, formando um "risco". E em cada "pedaço da linha" é gerado um pequeno cubo. No final ao soltar o clique do mouse eu tenho um objeto pai (a linha), que contem todos os cubos pequenos, que "formam" a imagem da linha (parecido com o que jogo Draw Climber faz). O meu problema começa quando o objetoGerado não "vai até a posição do player".
Minha duvida é:
Como eu posso dar um "teleport" nesse objeto novo gerado ao desenhar um risco com o mouse, para a mesma posição de um objeto filho do objeto player?
No caso só para esclarecer melhor, eu já tentei praticamente de tudo kkkk. Eu já tentei:
- transform.position = objetoFilhoPlayer.transform.position;
- transform.position = new Vector3 (coordenadas x,y,z do objetoFilhoPlayer);
- tentei setar o objetoFilhoPlayer como pai do objeto gerado, e depois usei new Vector3 (0,0,0);
- tentei criar objetos novos para ser como objetos pai do objeto gerado e depois tentei setar a posição com os métodos anteriores.
- tentei inclusive, simplesmente setar a posição do objeto gerado para a posição do player e mesmo assim não consegui.
Perdi a conta de quantas coisas diferentes e pesquisas que eu fiz para resolver isso.
O resultado sempre é o objetoGerado tomar uma posição totalmente diferente de onde eu planejava que ele ficasse.
Um ponto que percebi foi que o objetoGerado, tem em seu transform uma escala "local" (pq ele sempre nasce no 0,0,0). Por isso tentei usar transform.TransformPoint e InverseTransformPoint, mas sem sucesso (embora eu não consegui entender a utilização deles corretamente me orientando pela documentação oficial da Unity).
Enfim, alguém consegue me ajudar no ponto que estou errando?
Não sei se será necessário colocar meu código aqui (uma vez que tentei explicar detalhadamente o que meu código faz), mas caso seja eu posto aqui depois sem problemas.
Agradeço a atenção de vocês!
vphyre- Iniciante
- PONTOS : 1921
REPUTAÇÃO : 0
Respeito as regras :
Re: Problemas com o transform.position com GameObjects 3D
Eu ia fazer um "edit", para atualizar a situação, mas ainda estou aprendendo a mexer com a interface do forum kkkk, então me desculpem novamente.
Mas atualizando, eu descobri a possível causa do meu problema: O LineRenderer gerado não está na mesma posição do pivô do GameObject que ele pertence (por mais óbvio que isso fosse, eu não demorei para perceber isso), por isso quando eu tento igualar a posição do LineRenderer com a posição do objeto que eu preciso que ele fique junto, ele chega a igualar o pivô, porem ainda LineRenderer vai manter sua distância do pivô. Isso fazia eu ter a falsa impressão que o transform.position não estava funcionando corretamente.
O LineRenderer meio que nasce "abaixo do painel do canvas". Ou seja, até onde eu sei, ele em si não tem coordenadas globais... Enfim, a situação é essa.
Ainda estou investigando uma forma de resolver isso. Eu preciso que o LineRenderer pelo menos tenha a mesma posição que o pivô do GameObject que ele pertence.
Obs: Eu cheguei a colocar esse GameObject como filho de outro novo GameObject para tentar resolver o problema, mas na realidade a situação continua a mesma. O LineRenderer ainda vai manter a distância do seu pivô.
Mas atualizando, eu descobri a possível causa do meu problema: O LineRenderer gerado não está na mesma posição do pivô do GameObject que ele pertence (por mais óbvio que isso fosse, eu não demorei para perceber isso), por isso quando eu tento igualar a posição do LineRenderer com a posição do objeto que eu preciso que ele fique junto, ele chega a igualar o pivô, porem ainda LineRenderer vai manter sua distância do pivô. Isso fazia eu ter a falsa impressão que o transform.position não estava funcionando corretamente.
O LineRenderer meio que nasce "abaixo do painel do canvas". Ou seja, até onde eu sei, ele em si não tem coordenadas globais... Enfim, a situação é essa.
Ainda estou investigando uma forma de resolver isso. Eu preciso que o LineRenderer pelo menos tenha a mesma posição que o pivô do GameObject que ele pertence.
Obs: Eu cheguei a colocar esse GameObject como filho de outro novo GameObject para tentar resolver o problema, mas na realidade a situação continua a mesma. O LineRenderer ainda vai manter a distância do seu pivô.
vphyre- Iniciante
- PONTOS : 1921
REPUTAÇÃO : 0
Respeito as regras :
Re: Problemas com o transform.position com GameObjects 3D
Eu demorei para perceber isso*vphyre escreveu:Mas atualizando, eu descobri a possível causa do meu problema: O LineRenderer gerado não está na mesma posição do pivô do GameObject que ele pertence (por mais óbvio que isso fosse, eu não demorei para perceber isso), por isso quando eu tento igualar a posição do LineRenderer com a posição do objeto que eu preciso que ele fique junto, ele chega a igualar o pivô, porem ainda LineRenderer vai manter sua distância do pivô. Isso fazia eu ter a falsa impressão que o transform.position não estava funcionando corretamente.
vphyre- Iniciante
- PONTOS : 1921
REPUTAÇÃO : 0
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] Como faço para um transform.position receber um novo transform dentro de um if
» [AJUDA] transform.position
» problema com o transform.position
» Duvida com Transform.position
» Duvida sobre transform.position!
» [AJUDA] transform.position
» problema com o transform.position
» Duvida com Transform.position
» Duvida sobre transform.position!
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos