Rotacionar 90°
4 participantes
Página 1 de 1
Rotacionar 90°
Como fazer com que, ao pressionar uma tecla, um objeto rotacione 90° no eixo Z e depois de rotacionar esses 90° ele pare, e caso eu solte essa tecla o objeto volte a posição em que estava inicialmente? :D
Joaogabrielf13- Avançado
- PONTOS : 3596
REPUTAÇÃO : 7
Respeito as regras :
Re: Rotacionar 90°
- Código:
using UnityEngine;
using System.Collections;
public class Girar90 : MonoBehaviour{
void Update (){
if(Input.GetKeyDown ("//Aqui você coloca a letra"));
transform.Rotate (0, 0, 90);
}
}
Última edição por Mauricio Maggot em Sáb Mar 05, 2016 12:50 pm, editado 1 vez(es)
Re: Rotacionar 90°
Use o eulerAngles, amigo.
ismarspn- Programador
- PONTOS : 3999
REPUTAÇÃO : 147
Idade : 30
Áreas de atuação : Unity, Photoshop, Illustrator, After Effects, Adobe Flash
Respeito as regras :
Re: Rotacionar 90°
Então nesse caso o código é:
- Código:
using UnityEngine;
using System.Collections;
void Update (){
if ( Input.GeyKeyDown("Letra")){
transform.eulerAngles = new Vector3 ( 0, 0, 90);
}
}
}
Re: Rotacionar 90°
Sim so que eu queria que, quando eu pressiona-se uma tecla e mantivesse pressionada, ai rotacionava,e quando eu soltasse essa tecla , voltava de volta pra posição inicial. No script eu coloquei um else pra voltar pra posição 0,0,0:
So que tipo, no meu caso, é um personagem top down e ele rotaciona sempre pro mouse, e o que rotaciona 90° é o braço que é separado do torso do perso. Se eu coloco pra ele voltar pra 0,0,0 ele para de acompanhar o corpo do personagem e fica sempre em 0,0,0.
Olha aqui, gravei um video do jogo Hotline Miami, é exatamente assim que quero fazer.
- Código:
void Update () {
if (Input.GetKey (KeyCode.Mouse1)) {
transform.eulerAngles = new Vector3 (0, 0, 90);
} else {
transform.eulerAngles = new Vector3 (0, 0, 0);
}
}
So que tipo, no meu caso, é um personagem top down e ele rotaciona sempre pro mouse, e o que rotaciona 90° é o braço que é separado do torso do perso. Se eu coloco pra ele voltar pra 0,0,0 ele para de acompanhar o corpo do personagem e fica sempre em 0,0,0.
Olha aqui, gravei um video do jogo Hotline Miami, é exatamente assim que quero fazer.
Joaogabrielf13- Avançado
- PONTOS : 3596
REPUTAÇÃO : 7
Respeito as regras :
Re: Rotacionar 90°
Bom eu vi a vídeo aula e tentei aplicar no script o lerp e o local.position e deu muitos erros, acho q n entendi bem. Mas o jeito que eu queria fazer era que, quando eu pressionasse uma tecla e mantivesse ela pressionada, o braço iria rotacionar ate 90°( não de forma instantânea, dai tentei o lerp) mas se eu soltasse essa tecla ai ele iria voltar para a posição em que estava inicialmente, dai eu tentei o localposition( e a volta para a posição inicial também não sendo intantânea, por isso tentei o lerp aqui também). Mas deu muitos erros e não entendi bem.
- Código:
void Update () {
if (Input.GetKey (KeyCode.Mouse1)) {
transform.eulerAngles = Vector3.Lerp (transform.eulerAngles, Vector3 (0, 0, 90), Time.deltaTime);
} else {
transform.localPosition = new Vector3.lerp (transform.localPosition, Vector3 (1.2, 8.4, 0), Time.deltaTime);
}
}
Joaogabrielf13- Avançado
- PONTOS : 3596
REPUTAÇÃO : 7
Respeito as regras :
Re: Rotacionar 90°
Cara, cuidado nesse "ver o vídeo" meio depressa, você errou bastante coisa na sintaxe... Más aqui vai um exemplo completo :D
- Código:
using UnityEngine;
using System.Collections;
public class ItensDataBase : MonoBehaviour {
private Vector3 rotacaoInicial;
void Start(){
rotacaoInicial = transform.eulerAngles;
}
void Update () {
if (Input.GetMouseButton (0)) {
transform.eulerAngles = Vector3.Lerp (transform.eulerAngles, new Vector3 (0, 0, 90), Time.deltaTime);
} else {
transform.eulerAngles = Vector3.Lerp (transform.eulerAngles, rotacaoInicial, Time.deltaTime);
}
}
}
Re: Rotacionar 90°
Depois que vi o video tentei isso do private Vector3, coloquei que a rotacaoinicial recebia a posição do corpo do personagem e deu muitos erros. Mas com esse script que você me passou o braço não rotaciona. E fiquei na duvida do porque você não usou o .localPosition, ja que na video aula você diz que é bom usar quando o objeto do script for filho de um outro objeto, no caso o braço filho do corpo.
Joaogabrielf13- Avançado
- PONTOS : 3596
REPUTAÇÃO : 7
Respeito as regras :
Re: Rotacionar 90°
Joaogabrielf13 escreveu:Depois que vi o video tentei isso do private Vector3, coloquei que a rotacaoinicial recebia a posição do corpo do personagem e deu muitos erros. Mas com esse script que você me passou o braço não rotaciona. E fiquei na duvida do porque você não usou o .localPosition, ja que na video aula você diz que é bom usar quando o objeto do script for filho de um outro objeto, no caso o braço filho do corpo.
Más você quer mecher na posição ou na rotação???
se for rotação, ai é o localEulerAngles
Re: Rotacionar 90°
Ah sim, sim.Rotação. Tentei mexer no script mas não consegui deixar do jeito que eu queria. Mas também não entedi porque esse script que você me passou não funcionou.
Joaogabrielf13- Avançado
- PONTOS : 3596
REPUTAÇÃO : 7
Respeito as regras :
Re: Rotacionar 90°
O que eeeeexatamente quer fazer, rotacionar localmente o braço??? então basta trocar todos os eulerAngles por localEulerAngles
Re: Rotacionar 90°
Numa das minhas mensagens acima tem um video que gravei de um jogo, é exatamente aquilo.
Joaogabrielf13- Avançado
- PONTOS : 3596
REPUTAÇÃO : 7
Respeito as regras :
Re: Rotacionar 90°
Teste isto, eh elaborado especialmente para algo como o vídeo demonstra... basta linkar os objetos certos
- Código:
using UnityEngine;
using System.Collections;
public class Girar90 : MonoBehaviour {
public GameObject BracoDir,BracoEsq;
void Update () {
if (Input.GetMouseButton (0)) {
BracoDir.transform.localRotation = Quaternion.Lerp(BracoDir.transform.localRotation, Quaternion.Euler(Vector3.forward * 90f), Time.deltaTime * 3);
BracoEsq.transform.localRotation = Quaternion.Lerp(BracoEsq.transform.localRotation, Quaternion.Euler(Vector3.forward * -90f), Time.deltaTime * 3);
} else {
BracoDir.transform.localRotation = Quaternion.Lerp(BracoDir.transform.localRotation, Quaternion.Euler(Vector3.forward * 0), Time.deltaTime * 3);
BracoEsq.transform.localRotation = Quaternion.Lerp(BracoEsq.transform.localRotation, Quaternion.Euler(Vector3.forward * 0), Time.deltaTime * 3);
}
}
}
Re: Rotacionar 90°
Boa, é exatamente isso, só que esta acontecendo um problema, mesmo eu linkando o braço direito na variável, a unity diz que nao esta linkado. Fui no script e apaguei tudo relacionado ao braço direito e funcionou. Mas se eu linkar da erro.
EDIT: Os sinais da rotação estavam trocados, troquei -90 por 90 e vice e versa e deu certo.Muito obrigado!
EDIT: Os sinais da rotação estavam trocados, troquei -90 por 90 e vice e versa e deu certo.Muito obrigado!
Joaogabrielf13- Avançado
- PONTOS : 3596
REPUTAÇÃO : 7
Respeito as regras :
Tópicos semelhantes
» Camera não rotacionar
» erro ao rotacionar
» (Dúvida) Rotacionar roda
» Pegar objeto e rotacionar
» ROTACIONAR NO ÂNGULO DO GAMEOBJECT
» erro ao rotacionar
» (Dúvida) Rotacionar roda
» Pegar objeto e rotacionar
» ROTACIONAR NO ÂNGULO DO GAMEOBJECT
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos