Entrar
Últimos assuntos
» Colisões não funcionandopor RastaMaan Ontem à(s) 19:49
» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Ontem à(s) 16:45
» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18
» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30
» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07
» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45
» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51
» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31
» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11
» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39
» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27
» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30
» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17
» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18
» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34
» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13
» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18
» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12
» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02
» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55
» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42
» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56
» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49
» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21
» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21
Unity - ajuda para mover objetos
+2
theguitarmester
polosam
6 participantes
GMBR :: Ensine & Aprenda :: Perguntas e Respostas :: Unity
Página 1 de 1
Unity - ajuda para mover objetos
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.
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.
Eu não sei por onde começar esse código de mudança de posição.
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.
polosam- Games Ranking :
Notas recebidas : A + B
Data de inscrição : 20/12/2010
Reputação : 120
Número de Mensagens : 749
Prêmios :
x 0 x 0 x 0
x 1 x 1 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
Re: Unity - ajuda para mover objetos
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:
A segunda é direto pela tecla:
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:
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;
moisesBR gosta desta mensagem
Re: Unity - ajuda para mover objetos
Obrigado pelo toque, guitar!
Eu coloquei este código no update:
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?
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;
}
}
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- Games Ranking :
Notas recebidas : A + B
Data de inscrição : 20/12/2010
Reputação : 120
Número de Mensagens : 749
Prêmios :
x 0 x 0 x 0
x 1 x 1 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
Re: Unity - ajuda para mover objetos
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:
input.get.. retorna um bool/boleano, logo tu pode fazer:
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:
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.
é como no game maker:
- Código:
Input.GetKey() = keyboard_check()
Input.GetKeyDown() = keyboard_check_pressed()
Input.GetKeyUp= keyboard_check_released()
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.
Re: Unity - ajuda para mover objetos
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:
Não para depois do tempo que eu quero, não é automático, mas sinto que já é uma grande evolução.
Vou baixar uma versão mais recente do Unity ainda hoje.
polosam- Games Ranking :
Notas recebidas : A + B
Data de inscrição : 20/12/2010
Reputação : 120
Número de Mensagens : 749
Prêmios :
x 0 x 0 x 0
x 1 x 1 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
Re: Unity - ajuda para mover objetos
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:
Isso aí vai ser executado por 5 segundos. (Time.time está em segundo).
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).
Re: Unity - ajuda para mover objetos
Minha dica, não utilize Update() para movimentação de personagens e atualização de UI, use FixedUpdate().
moisesBR gosta desta mensagem
Re: Unity - ajuda para mover objetos
Ah, vai ficar de segredinho?Pit Bull escreveu:Minha dica, não utilize Update() para movimentação de personagens e atualização de UI, use FixedUpdate().
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- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: Unity - ajuda para mover objetos
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".Qual a diferença entre Update() e FixedUpdate()?
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é?
saim gosta desta mensagem
Re: Unity - ajuda para mover objetos
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
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
saim gosta desta mensagem
Re: Unity - ajuda para mover objetos
Só completando...
FixedUpdate o tempo de cada iteração é fixo, e o tempo pode ser configurado nas configurações do projeto.
Update o tempo de cada iteração é variável. Você pode ver certinho o tempo do último frame usando Time.deltaTime
LateUpdate funciona igual o Update, mas é chamado após o Update.
FixedUpdate o tempo de cada iteração é fixo, e o tempo pode ser configurado nas configurações do projeto.
Update o tempo de cada iteração é variável. Você pode ver certinho o tempo do último frame usando Time.deltaTime
LateUpdate funciona igual o Update, mas é chamado após o Update.
Luidi- Data de inscrição : 10/05/2008
Reputação : 0
Número de Mensagens : 2
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Plataformas :- Unity
- C#
theguitarmester gosta desta mensagem
Tópicos semelhantes
» Ajuda para mover arquivo
» [Ajuda] Dá para sobrepôr objetos numa room?
» [Dúvida]Mover objetos com o mouse
» Mover objetos feitos em draw [RESOLVIDO]
» Inimigo mover , desviando de objetos sólidos
» [Ajuda] Dá para sobrepôr objetos numa room?
» [Dúvida]Mover objetos com o mouse
» Mover objetos feitos em draw [RESOLVIDO]
» Inimigo mover , desviando de objetos sólidos
GMBR :: Ensine & Aprenda :: Perguntas e Respostas :: Unity
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos