Rotacionar objeto e mover para a direita e para a esquerda
2 participantes
Página 1 de 1
Rotacionar objeto e mover para a direita e para a esquerda
Pessoal, estou com um problema no script abaixo e não sei como resolver, quero que o objeto, que no caso é uma serra, fique rodando só no eixo Z, funcionou no código abaixo, porem depois que coloquei o código para ele ficar indo para a direita e depois para a esquerda, funciona todo desengonçado mudando a posição e rodando como se tivesse orbitando algo todo doido.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ROTACIONA : MonoBehaviour
{
public float velGiro = 10;
public float speed;
public float tempoMovimento;
// direção ora vai para a direita ora vai para esquerda
private bool direcao = true;
private float timer;
void Start()
{
}
void Update()
{
//AQUI ROTACIONA O OBJETO
transform.Rotate(0, 0, velGiro * 10 * Time.deltaTime);
if (direcao)
{
// se verdadeiro o objeto vai para a direita
transform.Translate(Vector2.right * speed * Time.deltaTime);
}
else
{
// se verdadeiro o objeto vai para a esquerda
transform.Translate(Vector2.left * speed * Time.deltaTime);
}
// timer recebe o tempo real do jogo tipo 1 2 3 ...segundos
timer += Time.deltaTime;
if (timer >= tempoMovimento)
{
direcao = !direcao;
timer = 0f;
}
}
}
acefogo- Avançado
- PONTOS : 1549
REPUTAÇÃO : 9
Respeito as regras :
Re: Rotacionar objeto e mover para a direita e para a esquerda
Acredito que seja porque voce precisa congelar as rotação e posições que voce nao deseja que ele vá, e para isso voce precisa de um rigdbody, olhe tente alterar para este script (Nele eu já adiciono o Rigdbody e congelo as posições e rotações):
caso voce queira adicionar o rigdbody pelo inspector mesmo, exclua a linha
"gameObject.AddComponent<Rigidbody>();"
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ROTACIONA : MonoBehaviour
{
public float velGiro = 10;
public float speed;
public float tempoMovimento;
// direção ora vai para a direita ora vai para esquerda
private bool direcao = true;
private float timer;
// rigdbody
public Rigdbody rb;
void Start()
{
gameObject.AddComponent<Rigidbody>(); // adiciona o componente Rigdbody
rb = GetComponent<Rigidbody>(); // irá detectar o rigdbody presente no objeto que contém este script
rb.constraints = RigidbodyConstraints.FreezePositionY | RigidbodyConstraints.FreezeRotationX | RigidbodyConstraints.FreezeRotationY; //congela as posições y, e congela as rotações x e y
}
void Update()
{
//AQUI ROTACIONA O OBJETO
transform.Rotate(0, 0, velGiro * 10 * Time.deltaTime);
if (direcao)
{
// se verdadeiro o objeto vai para a direita
transform.Translate(Vector2.right * speed * Time.deltaTime);
}
else
{
// se verdadeiro o objeto vai para a esquerda
transform.Translate(Vector2.left * speed * Time.deltaTime);
}
// timer recebe o tempo real do jogo tipo 1 2 3 ...segundos
timer += Time.deltaTime;
if (timer >= tempoMovimento)
{
direcao = !direcao;
timer = 0f;
}
}
}
caso voce queira adicionar o rigdbody pelo inspector mesmo, exclua a linha
"gameObject.AddComponent<Rigidbody>();"
Pokedlg- ProgramadorMaster
- PONTOS : 2336
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: Rotacionar objeto e mover para a direita e para a esquerda
Esqueci de dizer irmão, é para um projeto 2D, tentei alterar umas coisas aí no código passando para 2d mas FreezeRotationX e FreezeRotationY dão erros.
acefogo- Avançado
- PONTOS : 1549
REPUTAÇÃO : 9
Respeito as regras :
Pokedlg- ProgramadorMaster
- PONTOS : 2336
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: Rotacionar objeto e mover para a direita e para a esquerda
É como se o FreezeRotationx não existisse no RigidbodyConstraints2D. Mas acabei de resolver o problema, ao invés de deixar tudo em um código, eu deixei o que rotaciona em um e o que movimenta horizontalmente em outro, aí coloquei o que rotaciona na serra, e o que movimenta para os lados coloquei em um objeto vazio, aí coloquei a serra como sendo filho. Agora a serra fica rodando normal e o objeto vazio fica levando ela para um lado e para o outro. Agradeço por me ajudar.
acefogo- Avançado
- PONTOS : 1549
REPUTAÇÃO : 9
Respeito as regras :
Pokedlg- ProgramadorMaster
- PONTOS : 2336
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Tópicos semelhantes
» [TUTORIAL] Fazer o personagem ir para a direita e para esquerda tocando na tela (ANDROID)!
» Como faço para meu inimigo se movimentar da esquerda para direita estilo super mário?
» fazer inimigo se movimentar para direita e esquerda jogo de plataforma
» AJUDA - TUTORIAL Unity 2017 - Mover e rotacionar para a POSIÇÃO do MOUSE
» rigidbody2D,movimento direita, esquerda, pulo,, problema
» Como faço para meu inimigo se movimentar da esquerda para direita estilo super mário?
» fazer inimigo se movimentar para direita e esquerda jogo de plataforma
» AJUDA - TUTORIAL Unity 2017 - Mover e rotacionar para a POSIÇÃO do MOUSE
» rigidbody2D,movimento direita, esquerda, pulo,, problema
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos