Ajuda com Rigidbody eixo Y mover constante
+2
Weslley
Yuri Alexs
6 participantes
Página 1 de 1
Ajuda com Rigidbody eixo Y mover constante
Boa noite
Quero fazer um foguete que quando for pressionada a tecla "W" ele comece a decolar (eixo Y) acelerando e depois ficar com uma velocidade constante. Se o "W" for solto ele para de acelerar.
Queria ajuda com o script, pois com esse script o foguete está apenas pulando:
Quero fazer um foguete que quando for pressionada a tecla "W" ele comece a decolar (eixo Y) acelerando e depois ficar com uma velocidade constante. Se o "W" for solto ele para de acelerar.
Queria ajuda com o script, pois com esse script o foguete está apenas pulando:
- Código:
using UnityEngine;
using System.Collections;
public class Play : MonoBehaviour {
public Rigidbody2D rigidbody2D;
public float velMax;
public Vector2 jumpForce = new Vector2(0, 280);
public float velAtual;
// Use this for initialization
void Start () {
this.rigidbody2D = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update () {
velAtual = rigidbody2D.velocity.y;
if (Input.GetKeyDown("w"))
{
acelera();
}
}
void acelera() {
if (rigidbody2D.velocity.y < velMax) {
rigidbody2D.AddForce(jumpForce);
}
}
}
Yuri Alexs- Membro
- PONTOS : 3174
REPUTAÇÃO : 0
Respeito as regras :
Re: Ajuda com Rigidbody eixo Y mover constante
Yuri Alexs escreveu:Boa noite
Quero fazer um foguete que quando for pressionada a tecla "W" ele comece a decolar (eixo Y) acelerando e depois ficar com uma velocidade constante. Se o "W" for solto ele para de acelerar.
Queria ajuda com o script, pois com esse script o foguete está apenas pulando:
- Código:
using UnityEngine;
using System.Collections;
public class Play : MonoBehaviour {
public Rigidbody2D rigidbody2D;
public float velMax;
public Vector2 jumpForce = new Vector2(0, 280);
public float velAtual;
// Use this for initialization
void Start () {
this.rigidbody2D = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update () {
velAtual = rigidbody2D.velocity.y;
if (Input.GetKeyDown("w"))
{
acelera();
}
}
void acelera() {
if (rigidbody2D.velocity.y < velMax) {
rigidbody2D.AddForce(jumpForce);
}
}
}
use o velocity e diminua o jumpForce
- Código:
if (rigidbody2D.velocity.y < velMax) {
rigidbody2D.velocity = jumpForce;
}
Weslley- Moderador
- PONTOS : 5726
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: Ajuda com Rigidbody eixo Y mover constante
- Código:
if (rigidbody2D.velocity.y < velMax) {
rigidbody2D.velocity = jumpForce;
}
Fiz isso, mas apenas pula mais alto do que antes.
Yuri Alexs- Membro
- PONTOS : 3174
REPUTAÇÃO : 0
Respeito as regras :
Re: Ajuda com Rigidbody eixo Y mover constante
então pela logica do script que vc fez era isso mesmo que iria acontecer
faz a sim adiciona um bool para ele decolar
logo se a velocidade for maior que a determinada ele vai voar suave
leve em conta que eu não testei então pode não funfa leve como uma dica
EDIT1 : a variável softFly não pode ser muito menor que a startForce caso seja o foguete perdera força e cairá
faz a sim adiciona um bool para ele decolar
logo se a velocidade for maior que a determinada ele vai voar suave
leve em conta que eu não testei então pode não funfa leve como uma dica
- Código:
using UnityEngine;
using System.Collections;
public class Play : MonoBehaviour
{
public Rigidbody2D m_rigidBody;
public float velMaxToFly;
public float startForce;
public float softFlySpeed;
public float velAtual;
public bool toFly;
void Start()
{
m_rigidBody = GetComponent<Rigidbody2D>();
}
void Update()
{
velAtual = m_rigidBody.velocity.y;
if (Input.GetKeyDown("w") && velAtual == 0)
{
toFly = true;
}
if (toFly)
{
StartFly();
}
if (velAtual > velMaxToFly)
{
ToflySoft();
toFly = false;
}
}
void ToflySoft()
{
m_rigidBody.velocity = new Vector2(0, softFlySpeed);
}
void StartFly()
{
m_rigidBody.velocity = new Vector2 (0,startForce);
}
}
EDIT1 : a variável softFly não pode ser muito menor que a startForce caso seja o foguete perdera força e cairá
Weslley- Moderador
- PONTOS : 5726
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: Ajuda com Rigidbody eixo Y mover constante
aproveito o topico para pedir ajuda em um movimento constante de um projetil no ar usando rigidbody2D
até eu fiz isso:
funciona e o objeto se move para a direita, mas ele vai acelerando e não é isso que eu quero, preciso que a velocidade seja constante.
o que dá p fazer com rigidbody p corrigir isso?
até eu fiz isso:
- Código:
void Update () {
rbAsteroide.AddForce(new Vector2(5, 0));
}
funciona e o objeto se move para a direita, mas ele vai acelerando e não é isso que eu quero, preciso que a velocidade seja constante.
o que dá p fazer com rigidbody p corrigir isso?
Flávio- MembroAvançado
- PONTOS : 2830
REPUTAÇÃO : 29
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras :
Re: Ajuda com Rigidbody eixo Y mover constante
Tente usar o .velocity do Rigidbody;
No lugar de AddForce();
No lugar de AddForce();
Phph09- Profissional
- PONTOS : 3788
REPUTAÇÃO : 240
Idade : 19
Respeito as regras :
Re: Ajuda com Rigidbody eixo Y mover constante
Phph09 escreveu:Tente usar o .velocity do Rigidbody;
No lugar de AddForce();
valeu amigo, funcionou assim:
- Código:
rbAsteroide.velocity = new Vector2(-5, 0);
Flávio- MembroAvançado
- PONTOS : 2830
REPUTAÇÃO : 29
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras :
Re: Ajuda com Rigidbody eixo Y mover constante
Phph09 , percebi que fazendo o movimento dessa forma com rigidbody ele vai para a direção que eu quero mas quando por exemplo o objeto colidir com outro igual que vem de uma direção diferente, ele nao rebate, como num jogo de sinuca por exemplo em que dependendo de como uma bola bate na outra elas vão para direções diferentes, elas quicam.
quero fazer esse efeito, de um objeto bater e ir para uma direção diferente ao colidir com outro igual ou outro anteparo qualquer.
como faço isso com o rigidbody? ou é melhor usar outra forma, como o AddForce mesmo?
quero fazer esse efeito, de um objeto bater e ir para uma direção diferente ao colidir com outro igual ou outro anteparo qualquer.
como faço isso com o rigidbody? ou é melhor usar outra forma, como o AddForce mesmo?
Flávio- MembroAvançado
- PONTOS : 2830
REPUTAÇÃO : 29
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras :
Re: Ajuda com Rigidbody eixo Y mover constante
Você precisa usar os materials PhysicsFlávio escreveu:Phph09 , percebi que fazendo o movimento dessa forma com rigidbody ele vai para a direção que eu quero mas quando por exemplo o objeto colidir com outro igual que vem de uma direção diferente, ele nao rebate, como num jogo de sinuca por exemplo em que dependendo de como uma bola bate na outra elas vão para direções diferentes, elas quicam.
quero fazer esse efeito, de um objeto bater e ir para uma direção diferente ao colidir com outro igual ou outro anteparo qualquer.
como faço isso com o rigidbody? ou é melhor usar outra forma, como o AddForce mesmo?
Água Sem Hidrogênio- Avançado
- PONTOS : 2750
REPUTAÇÃO : 25
Respeito as regras :
Re: Ajuda com Rigidbody eixo Y mover constante
Água Sem Hidrogênio escreveu:Você precisa usar os materials PhysicsFlávio escreveu:Phph09 , percebi que fazendo o movimento dessa forma com rigidbody ele vai para a direção que eu quero mas quando por exemplo o objeto colidir com outro igual que vem de uma direção diferente, ele nao rebate, como num jogo de sinuca por exemplo em que dependendo de como uma bola bate na outra elas vão para direções diferentes, elas quicam.
quero fazer esse efeito, de um objeto bater e ir para uma direção diferente ao colidir com outro igual ou outro anteparo qualquer.
como faço isso com o rigidbody? ou é melhor usar outra forma, como o AddForce mesmo?
onde eu os encontro, como faço isso?
Flávio- MembroAvançado
- PONTOS : 2830
REPUTAÇÃO : 29
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras :
Re: Ajuda com Rigidbody eixo Y mover constante
Vá na aba project , clique com o botão direito do mouse, e crie um Physic Material.Flávio escreveu:Água Sem Hidrogênio escreveu:Você precisa usar os materials PhysicsFlávio escreveu:Phph09 , percebi que fazendo o movimento dessa forma com rigidbody ele vai para a direção que eu quero mas quando por exemplo o objeto colidir com outro igual que vem de uma direção diferente, ele nao rebate, como num jogo de sinuca por exemplo em que dependendo de como uma bola bate na outra elas vão para direções diferentes, elas quicam.
quero fazer esse efeito, de um objeto bater e ir para uma direção diferente ao colidir com outro igual ou outro anteparo qualquer.
como faço isso com o rigidbody? ou é melhor usar outra forma, como o AddForce mesmo?
onde eu os encontro, como faço isso?
E coloque em Bounciness: 1, ou o valor que quiser, e teste.
Água Sem Hidrogênio- Avançado
- PONTOS : 2750
REPUTAÇÃO : 25
Respeito as regras :
Re: Ajuda com Rigidbody eixo Y mover constante
Água Sem Hidrogênio escreveu:Vá na aba project , clique com o botão direito do mouse, e crie um Physic Material.Flávio escreveu:Água Sem Hidrogênio escreveu:Você precisa usar os materials PhysicsFlávio escreveu:Phph09 , percebi que fazendo o movimento dessa forma com rigidbody ele vai para a direção que eu quero mas quando por exemplo o objeto colidir com outro igual que vem de uma direção diferente, ele nao rebate, como num jogo de sinuca por exemplo em que dependendo de como uma bola bate na outra elas vão para direções diferentes, elas quicam.
quero fazer esse efeito, de um objeto bater e ir para uma direção diferente ao colidir com outro igual ou outro anteparo qualquer.
como faço isso com o rigidbody? ou é melhor usar outra forma, como o AddForce mesmo?
onde eu os encontro, como faço isso?
E coloque em Bounciness: 1, ou o valor que quiser, e teste.
ok, e aí eu tenho que anexar esse material no objeto em questão?
Flávio- MembroAvançado
- PONTOS : 2830
REPUTAÇÃO : 29
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras :
Re: Ajuda com Rigidbody eixo Y mover constante
Sim.. Mas é óbvio, não é? :lol!:Flávio escreveu:Água Sem Hidrogênio escreveu:Vá na aba project , clique com o botão direito do mouse, e crie um Physic Material.Flávio escreveu:Água Sem Hidrogênio escreveu:Você precisa usar os materials PhysicsFlávio escreveu:Phph09 , percebi que fazendo o movimento dessa forma com rigidbody ele vai para a direção que eu quero mas quando por exemplo o objeto colidir com outro igual que vem de uma direção diferente, ele nao rebate, como num jogo de sinuca por exemplo em que dependendo de como uma bola bate na outra elas vão para direções diferentes, elas quicam.
quero fazer esse efeito, de um objeto bater e ir para uma direção diferente ao colidir com outro igual ou outro anteparo qualquer.
como faço isso com o rigidbody? ou é melhor usar outra forma, como o AddForce mesmo?
onde eu os encontro, como faço isso?
E coloque em Bounciness: 1, ou o valor que quiser, e teste.
ok, e aí eu tenho que anexar esse material no objeto em questão?
Água Sem Hidrogênio- Avançado
- PONTOS : 2750
REPUTAÇÃO : 25
Respeito as regras :
Re: Ajuda com Rigidbody eixo Y mover constante
Água Sem Hidrogênio escreveu:Sim.. Mas é óbvio, não é? :lol!:Flávio escreveu:Água Sem Hidrogênio escreveu:Vá na aba project , clique com o botão direito do mouse, e crie um Physic Material.Flávio escreveu:Água Sem Hidrogênio escreveu:Você precisa usar os materials PhysicsFlávio escreveu:Phph09 , percebi que fazendo o movimento dessa forma com rigidbody ele vai para a direção que eu quero mas quando por exemplo o objeto colidir com outro igual que vem de uma direção diferente, ele nao rebate, como num jogo de sinuca por exemplo em que dependendo de como uma bola bate na outra elas vão para direções diferentes, elas quicam.
quero fazer esse efeito, de um objeto bater e ir para uma direção diferente ao colidir com outro igual ou outro anteparo qualquer.
como faço isso com o rigidbody? ou é melhor usar outra forma, como o AddForce mesmo?
onde eu os encontro, como faço isso?
E coloque em Bounciness: 1, ou o valor que quiser, e teste.
ok, e aí eu tenho que anexar esse material no objeto em questão?
sim claro.. XP XP
blz eu já anexei e testei, mas o efeito foi de um objeto quicar no outro e voltarem entre si, é a mesma coisa de uma bola quicar no chao.
eu queria na verdade é um colidir com o outro e cada um ir para uma direção diferente, indo embora para o espaço mundo
Flávio- MembroAvançado
- PONTOS : 2830
REPUTAÇÃO : 29
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras :
Re: Ajuda com Rigidbody eixo Y mover constante
poste uma print das configurações do Rigidbody de cada objeto e do PhysicsMaterial de cada objeto
Uma boa é deixar o Drag dos Rigidbody e 0, e o angular Drag também
Uma boa é deixar o Drag dos Rigidbody e 0, e o angular Drag também
Tópicos semelhantes
» Como mover um objeto sem usar collider ou rigidbody?
» Rigidbody no eixo z
» Mover objeto no eixo y
» -[ COMO FAÇO PARA MOVER UM OBJ NO EIXO "Y" COM UM BOTÃO? ]-
» Rotacionar em eixo Y, alguém ajuda ?
» Rigidbody no eixo z
» Mover objeto no eixo y
» -[ COMO FAÇO PARA MOVER UM OBJ NO EIXO "Y" COM UM BOTÃO? ]-
» Rotacionar em eixo Y, alguém ajuda ?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos