GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Conectar-se

Esqueci minha senha

Últimos assuntos
» FAROL / LIGHTHOUSE
por Deo Costa Seg 21 Jun 2021, 22:38

» [Steam] Sophstar
por theguitarmester Seg 21 Jun 2021, 21:58

» Salvar Room!
por Rafael Augusto Seg 21 Jun 2021, 02:30

» Personagem interagir com objeto/NPC ao pressionar ENTER
por Wallace_ank Sab 19 Jun 2021, 21:40

» Village Builder
por DJM_JM Sab 19 Jun 2021, 18:55

» Triangle Fly 2: Infinity
por NPH Sab 19 Jun 2021, 14:10

» Problema com mudança de sprites baseado na posição do mouse
por TRFN Sab 19 Jun 2021, 12:11

» Meus tutoriais sobre Game Maker
por pontoevirgula Sab 19 Jun 2021, 09:49

» Square Adventure
por Kleber Craft Qui 17 Jun 2021, 18:45

» Doações
por gilomania3d Qua 16 Jun 2021, 20:20

» Como Manter itens ao passar de fase no Game Maker 2
por Kleber Craft Qua 16 Jun 2021, 20:03

» Multiplayer Local
por theguitarmester Sab 12 Jun 2021, 12:26

» Magic Battle (Título pode mudar)
por theguitarmester Ter 08 Jun 2021, 17:43

» Fazer o Player andar na Parede
por NPH Qua 02 Jun 2021, 21:11

» Problema no contato
por theguitarmester Ter 01 Jun 2021, 10:06

» Venha conferir o Espaço GMBR no Discord!
por Joton Dom 30 Maio 2021, 15:27

» Inimigo vai pra trás quando encosta no Player
por Paulomm32 Qua 26 Maio 2021, 07:52

» Desenvolvimento: Quais linguagens vocês tem conhecimento?
por theguitarmester Ter 25 Maio 2021, 09:45

» Fixar background
por Rafael Augusto Dom 23 Maio 2021, 15:17

» Acervo GMBR
por Mr.Rafael Dom 23 Maio 2021, 12:09

» quando o personagem andar trocar de sprite
por Felipe_Cardoso Sab 22 Maio 2021, 23:36

» problema animação de personagem
por Felipe_Cardoso Sex 21 Maio 2021, 17:30

» iniciar audio/musica junto com a sala
por NPH Qua 12 Maio 2021, 17:09

» mudar de room(cena) quando fosse colidido
por NPH Ter 11 Maio 2021, 22:15

» criar obj aonde o mouse foi clicado
por Felipe_Cardoso Ter 11 Maio 2021, 11:36


Unity - ajuda para mover objetos

Ir em baixo

Unity - ajuda para mover objetos Empty Unity - ajuda para mover objetos

Mensagem por polosam Qua 03 Jun 2020, 19:20

Galera, inaugurando a seção sobre Unity: na posição de um completo noob em C#, eu gostaria de uma orientação para mover essas duas plataformas destacadas na imagem. Preciso que elas fiquem escondidas atrás da parede, e aí, quando eu der um comando, elas devem aumentar um pouquinho o valor do seu eixo X até serem reveladas, ficando para fora e passando a funcionar como plataformas pisáveis.

Unity - ajuda para mover objetos Img01

Consegui entender o princípio de como fazer um objeto girar no que seria equivalente ao evento step (código abaixo), mas no momento não faço ideia de como determinar uma mudança de posição. Eu queria que fosse um movimento com duração de dois segundos.
Meu único código até agora:

Código:
using UnityEngine;
using System.Collections;

public class NewBehaviourScript : MonoBehaviour {
 float rotation =80f;

 void Update () {
 transform.Rotate(Vector3.up * rotation * Time.deltaTime);
 }
}


Eu não sei por onde começar esse código de mudança de posição. não
polosam
polosam

Games Ranking : Nota A

Notas recebidas : A + B
Data de inscrição : 20/12/2010
Reputação : 120
Número de Mensagens : 739
Prêmios : Unity - ajuda para mover objetos Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 1 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4


Ver perfil do usuário

Voltar ao Topo Ir em baixo

Unity - ajuda para mover objetos Empty Re: Unity - ajuda para mover objetos

Mensagem por theguitarmester Qua 03 Jun 2020, 20:14

Eae, estou aqui para te ajudar com minha forte experiência em C#/.Net e Unity de pouco mais de um mês, para inaugurar as respostas na sessão de Unity hehe

Pra iniciar eu vou ajudar com o que tu precisa e pode usar, e daí tu monta como quiser:

Pegar a tecla:
Existe um sistema novo de input, o qual eu já vi alguns vídeos sobres mas ainda não to usando, estou usando o antigo por ser mais fácil pra iniciar rapidamente, então te mostrarei nele, mas saiba que existe um novo melhor:
Pra ti pegar algum input, em geral tu vai/pode usar de duas maneiras:
a primeira é com botões pré definidos da Unity: http://prntscr.com/stbkv9or, por exemplo:
Código:
if (Input.GetButtonDown("Fire1")) { /* Se apertar o Fire1 (que é o mouse btn esquerdo, ctrl esquerdo, X/A no controle), faz algo*/ }

A segunda é direto pela tecla:
Código:
if (Input.GetKeyDown(KeyCode.LeftControl)) {
/* Se apertar o ctrl esquerdo, faz algo */
}

Documentação do Input: https://docs.unity3d.com/ScriptReference/Input.html


Transform objeto (posição, rotação, escala):
Como tu já fez ali, utiliza o transform.rotation pra rodar, .position pra mudar a posição, .localScale pra escala (além de outros).
Pra lidar com rotação, tu vai precisar bastante usar a classe Quaternion.
exemplo:
Código:
transform.position = transform.position + transform.forward * 2 * Time.deltaTime;
Isso fará com que a cada 2 segundos a posição desse objetoi tenha ido pra frente 2 unidade de medidas
theguitarmester
theguitarmester

Games Ranking : Nota B

Notas recebidas : B
Data de inscrição : 28/02/2012
Reputação : 119
Número de Mensagens : 2075
Prêmios : Unity - ajuda para mover objetos Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 2 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Plataformas :
  • Unity


Ver perfil do usuário http://guitarmester.no.comunidades.net/index.php?pagina=19362978

moisesBR gosta desta mensagem

Voltar ao Topo Ir em baixo

Unity - ajuda para mover objetos Empty Re: Unity - ajuda para mover objetos

Mensagem por polosam Qua 03 Jun 2020, 20:53

Obrigado pelo toque, guitar!
Eu coloquei este código no update:
Código:
void Update () {
 if (Input.GetKey("home"))
 {
 move=1;
 transform.position = transform.position + transform.forward * 2 * Time.deltaTime;
 }



 }
Estou patinando aqui ainda:
Quando apertava o botão elas se moviam para o lado apenas um tiquinho; tirando a palavra "down", do GetKey, mantenho pressionado o botão "home" e elas fazem o movimento contínuo que eu queria, só que não vai na direção desejada: quando troco forward por left, no código, o Unity dá erro de compilação.

Eu tentei trocar o ato de segurar o botão por uma variável, mas agora diz que esse valor não pode ser convertido para bool (tento com variáveis int e float, e ao tentar declarar uma bool para lá, deu mais uma porção de erros no debug).

Por favor: como faço para trocar esse ato de segurar o botão por uma variável que possa simplesmente mudar para true/1?

A versão do Unity é a 4.5.4f1. Seria bom baixar a mais recente, mesmo eu sendo um iniciante absoluto?
polosam
polosam

Games Ranking : Nota A

Notas recebidas : A + B
Data de inscrição : 20/12/2010
Reputação : 120
Número de Mensagens : 739
Prêmios : Unity - ajuda para mover objetos Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 1 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4


Ver perfil do usuário

Voltar ao Topo Ir em baixo

Unity - ajuda para mover objetos Empty Re: Unity - ajuda para mover objetos

Mensagem por theguitarmester Qui 04 Jun 2020, 12:08

Eu baixei a mais atual, não vejo motivo pra baixar uma versão antigo, a menos que não funcione uma atual na sua máquina.

é como no game maker:
Código:
Input.GetKey() = keyboard_check()
Input.GetKeyDown() = keyboard_check_pressed()
Input.GetKeyUp= keyboard_check_released()
(Meu GM tá enferrujado, pode ser que a função não seja bem assim, mas é essa a ideia)

input.get.. retorna um bool/boleano, logo tu pode fazer:
Código:
mover = Input.GetKey("home");


transform.position é uma variável do tipo Vector3, ou seja, um vetor de 3 valores (que são usados geralmente pro x, y e z).
tranform.forward, .right, .up, a mesma coisa, porém são valores muito legais que servem pra facilitar e muito a tua vida (do que se tivesse que fazer manualmente), basicamente, como o nome sugere, eles apontam a direção referente ao atual transform. Não existe transform.down ou transform.left, esses tu obtem com a negação do transform.up e tranform.right:
Código:
Vector3 transformLeft = -transform.right;
Vector3 transformDown = -transform.up;


outra coisa talvez que não ficou clara:
eu to falando mover, e tu também, mas na verdade isso não está movendo, e sim tu tá colocando o objeto em uma nova posição, por isso o Input.GetKeyDown() só deu uma mexidinha, porque com ele tu só executou uma vez a ação de colocar o objeto na posição dele, e mais um pouco pra frente.
theguitarmester
theguitarmester

Games Ranking : Nota B

Notas recebidas : B
Data de inscrição : 28/02/2012
Reputação : 119
Número de Mensagens : 2075
Prêmios : Unity - ajuda para mover objetos Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 2 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Plataformas :
  • Unity


Ver perfil do usuário http://guitarmester.no.comunidades.net/index.php?pagina=19362978

Voltar ao Topo Ir em baixo

Unity - ajuda para mover objetos Empty Re: Unity - ajuda para mover objetos

Mensagem por polosam Qui 04 Jun 2020, 15:17

@theguitarmester escreveu:

input.get.. retorna um bool/boleano, logo tu pode fazer:
Código:
mover = Input.GetKey("home");


Cara, me ajudou demais. Eu dei uma busca sobre esse negócio de bool e consegui fazer funcionar com este código:
Unity - ajuda para mover objetos Entendeno
Não para depois do tempo que eu quero, não é automático, mas sinto que já é uma grande evolução.

yes  Vou baixar uma versão mais recente do Unity ainda hoje.
polosam
polosam

Games Ranking : Nota A

Notas recebidas : A + B
Data de inscrição : 20/12/2010
Reputação : 120
Número de Mensagens : 739
Prêmios : Unity - ajuda para mover objetos Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 1 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4


Ver perfil do usuário

Voltar ao Topo Ir em baixo

Unity - ajuda para mover objetos Empty Re: Unity - ajuda para mover objetos

Mensagem por theguitarmester Qui 04 Jun 2020, 20:34

Que bom cara, hehe

Sobre parar no tempo, procure sobre Time.time, tu pode salvar numa variável o momento que tu pressionou, e depois fazer algo como:
Código:
if (Time.time < tempoSalvo + 5) {}

Isso aí vai ser executado por 5 segundos. (Time.time está em segundo).
theguitarmester
theguitarmester

Games Ranking : Nota B

Notas recebidas : B
Data de inscrição : 28/02/2012
Reputação : 119
Número de Mensagens : 2075
Prêmios : Unity - ajuda para mover objetos Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 2 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Plataformas :
  • Unity


Ver perfil do usuário http://guitarmester.no.comunidades.net/index.php?pagina=19362978

Voltar ao Topo Ir em baixo

Unity - ajuda para mover objetos Empty Re: Unity - ajuda para mover objetos

Mensagem por Pit Bull Qui 18 Jun 2020, 15:59

Minha dica, não utilize Update() para movimentação de personagens e atualização de UI, use FixedUpdate().
Pit Bull
Pit Bull

Data de inscrição : 31/08/2010
Reputação : 16
Número de Mensagens : 639
Prêmios : Unity - ajuda para mover objetos Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Unity
  • C#
  • Outros


Ver perfil do usuário https://discord.gg/ZPM2d6q

moisesBR gosta desta mensagem

Voltar ao Topo Ir em baixo

Unity - ajuda para mover objetos Empty Re: Unity - ajuda para mover objetos

Mensagem por saim Seg 17 Ago 2020, 17:53

@Pit Bull escreveu:Minha dica, não utilize Update() para movimentação de personagens e atualização de UI, use FixedUpdate().
Ah, vai ficar de segredinho?
Eu já comecei no Unity várias vezes, mas nunca fui pra frente porque não encontrei uma comunidade bacana como essa. Agora que estamos lidando com a ferramenta, explique:
Qual a diferença entre Update() e FixedUpdate()?

Aproveitando... minha ferrugem me faz acreditar que sejam versões Unity do "step" do Game Maker, mas se não forem, por favor me explique também o que é Update() e FixedUpdate().
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 131
Número de Mensagens : 3024
Prêmios : Unity - ajuda para mover objetos Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Unity - ajuda para mover objetos Empty Re: Unity - ajuda para mover objetos

Mensagem por Willy Seg 17 Ago 2020, 18:56

Qual a diferença entre Update() e FixedUpdate()?
Pelo pouco que me lembro do Unity, o Update é executado quantas vezes seu processador aguentar. O que significa que um loop simples que incremente uma variável em 1, ao final de um segundo, na minha máquina pode estar valendo "500", enquanto na sua máquina pode valer "3000".
Já o FixedUpdate, garante que 1 segundo seja o mesmo pra mim e pra você, independente da velocidade do processamento. No final, eu e você teremos 500.

É isso, né? scratch
Willy
Willy

Games Ranking : Nota A

Notas recebidas : C + B + A + A
Data de inscrição : 08/06/2009
Reputação : 264
Número de Mensagens : 1888
Prêmios : Unity - ajuda para mover objetos Empty

Medalhas x 0 Tutoriais x 2 Moedas x 0

Ouro x 2 Prata x 1 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ver perfil do usuário http://willy-gmbr.blogspot.com/

saim gosta desta mensagem

Voltar ao Topo Ir em baixo

Unity - ajuda para mover objetos Empty Re: Unity - ajuda para mover objetos

Mensagem por theguitarmester Seg 17 Ago 2020, 19:07

Eae @Saim, beleza?
Uma vez tentei implementar uma máquina de estado baseado no teu tutorial... não consegui na época, hue

Bom, no meu projeto (em Unity) atual eu criei uma, e postei até aqui pra compartilhar com o pessoal heh

Vamos a pergunta e sendo direto porque meu conhecimento com o Unity não é muito:
Sim, o Update e FixedUpdate seria como o Step do Game Maker, com a diferença que o step do game maker é medido sobre o atual fps da room, já no Unity não existe isso, no Update tu vai ter o máximo possível.
A diferença entre eles, é que o Fixedupdate é a atualização baseada na física, isto é, a física atualiza no step dele. em geral tu vai ter menos atualizações no FixedUpdate.

Editado:
Vendo a resposta do Willy, fui dar uma verificada melhor na diferença e se tinha falado besteira hehe, bom:
https://docs.unity3d.com/ScriptReference/MonoBehaviour.FixedUpdate.html

É a frequencia de atualização do sistema de física, e que por padrão é definido como 0.02 segundos.
Basicamente uma resposta complementa a outra Very Happy
theguitarmester
theguitarmester

Games Ranking : Nota B

Notas recebidas : B
Data de inscrição : 28/02/2012
Reputação : 119
Número de Mensagens : 2075
Prêmios : Unity - ajuda para mover objetos Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 2 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Plataformas :
  • Unity


Ver perfil do usuário http://guitarmester.no.comunidades.net/index.php?pagina=19362978

saim gosta desta mensagem

Voltar ao Topo Ir em baixo

Unity - ajuda para mover objetos Empty Re: Unity - ajuda para mover objetos

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Voltar ao Topo


 
Permissão neste fórum:
Você não pode responder aos tópicos neste fórum