[TUTORIAL] Girar objetos / mover de acordo com a rotação do Celular,tablet,etc
Página 1 de 1
[TUTORIAL] Girar objetos / mover de acordo com a rotação do Celular,tablet,etc
para fazer isto é bastante simples, você apenas usará este comando:
um exemplo de rotação
O mesmo exemplo acima só que com limites na rotação:
é perfeito para carros
Outro exemplo, só que agora no eixo Z
para fazer movimento é simples assim também, é só trocar o Rotate por translate ou seja lá o que for
o comando " Input.acceleration " detecta a inclinação do android, ai basta você dizer qual aceleração quer que ele detecte
Input.acceleration.x
Input.acceleration.y
Input.acceleration.z
simples :D
Como bonus no tutorial estarei deixando alguns comandos de input também, como:
isto é reponsavel por detectar quando você está arrastando o dedo na tela.
este script acima se colocado em um objeto fará ele se mover de acordo com o movimento do dedo na tela, nos eixos X e Y
Já este aqui fará o objeto mover-se de forma parecida com o jogo subway surfers:
- Código:
Input.acceleration. x ou y ou z
um exemplo de rotação
- Código:
using UnityEngine;
using System.Collections;
public class Movimento : MonoBehaviour {
public float velocidadeDeRotacao = 20;
void Update () {
transform.Rotate(0,Input.acceleration.x*Time.deltaTime*velocidadeDeRotacao,0); // rotaçao em Y
}
}
O mesmo exemplo acima só que com limites na rotação:
- Código:
using UnityEngine;
using System.Collections;
public class Movimento : MonoBehaviour {
public float velocidadeDeRotacao = 20;
void Update () {
transform.Rotate(0,Input.acceleration.x*Time.deltaTime*velocidadeDeRotacao,0); // rotaçao em Y
if (transform.eulerAngles.y >= 45 && transform.eulerAngles.y < 60) {
transform.eulerAngles = new Vector3(0,45,0);
}
if (transform.eulerAngles.y <= 315 && transform.eulerAngles.y > 300) {
transform.eulerAngles = new Vector3(0,315,0);
}
}
}
é perfeito para carros
Outro exemplo, só que agora no eixo Z
- Código:
using UnityEngine;
using System.Collections;
public class Movimento : MonoBehaviour {
public float velocidadeDeRotacao = 120;
void Update () {
transform.Rotate(0, 0, -Input.acceleration.z*Time.deltaTime*velocidadeDeRotacao); // rotaçao em Z
if (transform.eulerAngles.z >= 90 && transform.eulerAngles.z < 110) {
transform.eulerAngles = new Vector3(0,0,90);
}
if (transform.eulerAngles.z <= 270 && transform.eulerAngles.z > 250) {
transform.eulerAngles = new Vector3(0,0,270);
}
}
}
para fazer movimento é simples assim também, é só trocar o Rotate por translate ou seja lá o que for
o comando " Input.acceleration " detecta a inclinação do android, ai basta você dizer qual aceleração quer que ele detecte
Input.acceleration.x
Input.acceleration.y
Input.acceleration.z
simples :D
Como bonus no tutorial estarei deixando alguns comandos de input também, como:
- Código:
using UnityEngine;
using System.Collections;
public class Movimento : MonoBehaviour {
public float speed = 0.1F;
void Update() {
if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved) {
Vector2 touchDeltaPosition = Input.GetTouch(0).deltaPosition;
transform.Translate(touchDeltaPosition.x * speed, touchDeltaPosition.y * speed, 0);
}
}
}
isto é reponsavel por detectar quando você está arrastando o dedo na tela.
este script acima se colocado em um objeto fará ele se mover de acordo com o movimento do dedo na tela, nos eixos X e Y
Já este aqui fará o objeto mover-se de forma parecida com o jogo subway surfers:
- Código:
using UnityEngine;
using System.Collections;
public class Movimento : MonoBehaviour {
private int pista;
public float VelocidadeDecorrida = 2,VelocidadeDeTroca = 4;
private bool trocou;
private float cronometroTrocou;
void Update() {
transform.Translate (Vector3.forward * Time.deltaTime*VelocidadeDecorrida);
//PISTAS
if (pista == 0) {
Vector3 posicaoAtual = transform.position;
Vector3 posicaoFinal = new Vector3 (-2,transform.position.y,transform.position.z);
transform.position = Vector3.Lerp(posicaoAtual,posicaoFinal,VelocidadeDeTroca*Time.deltaTime);
}
if (pista == 1) {
Vector3 posicaoAtual = transform.position;
Vector3 posicaoFinal = new Vector3 (0,transform.position.y,transform.position.z);
transform.position = Vector3.Lerp(posicaoAtual,posicaoFinal,VelocidadeDeTroca*Time.deltaTime);
}
if (pista == 2) {
Vector3 posicaoAtual = transform.position;
Vector3 posicaoFinal = new Vector3 (2,transform.position.y,transform.position.z);
transform.position = Vector3.Lerp(posicaoAtual,posicaoFinal,VelocidadeDeTroca*Time.deltaTime);
}
if (pista <= 0) {
pista = 0;
}
if (pista >= 2) {
pista = 2;
}
//inputs
if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved && trocou == false) {
Vector2 touchDeltaPosition = Input.GetTouch(0).deltaPosition;
if(touchDeltaPosition.x > 0){
pista++;
trocou = true;
}else if(touchDeltaPosition.x < 0){
pista--;
trocou = true;
}
}
if (trocou == true) {
cronometroTrocou += Time.deltaTime;
}
if (cronometroTrocou >= 0.5f) {
trocou = false;
cronometroTrocou = 0;
}
}
}
Tópicos semelhantes
» [TUTORIAL] Mover, arremessar e girar objetos com o mouse
» [TUTORIAL] Mover, Girar e lançar objetos com o mouse ( estilo Amnesia )
» [TUTORIAL] Mover, girar e lançar objetos com o MOUSE (Unity 2017, atualizado)
» Como fazer para girar o celular e com isto girar o volante do veículo?
» [TUTORIAL] Mover/Empurrar Objetos, Caixote,etc
» [TUTORIAL] Mover, Girar e lançar objetos com o mouse ( estilo Amnesia )
» [TUTORIAL] Mover, girar e lançar objetos com o MOUSE (Unity 2017, atualizado)
» Como fazer para girar o celular e com isto girar o volante do veículo?
» [TUTORIAL] Mover/Empurrar Objetos, Caixote,etc
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos