Calculando a distância percorrida do addforce
3 participantes
Página 1 de 1
Calculando a distância percorrida do addforce
Bom dia galera, tenho uma enorme dúvida, me pediram pra construir um jogo de física onde você aplica um valor da força(entre 10 a 110 N) para empurrar um bloco e ele tem que parar num certo ponto. Por ser algo com focado para alunos do ensino médio, será algo bem básico mesmo, ou seja, desprezar a resistência do ar.
Eu fiz esses ajustes:
friction/atrito = 1
gravidade = 9,81
drag(normal e o angular) = 0
massa do bloco = 1
usando o rigibody 2D e o force mode impulse.
Meu professor de física me pediu para usar essa formula
Distancia = Velocidade*Velocidade/(2* coeficiente de atrito * gravidade)
e se eu aplicar uma força de 60 N, a distância daria aproximadamente 183,5 metros.
Porém quando uso o addforce para aplicar 60N na "direita"(1,0,0), o jogo computa que ele percorreu + ou -289,5 metros.
Alguém pode me ajuda a resolver esse problema, ou me explicar como funciona melhor o calculo que o addforce faz?
OBS: não sei se é normal, mas quando vejo a velocidade do rigibody, quando o bloco está em movimento, o valor da velocidade Y também fica mudando, isso pode influenciar a conta também?
Eu fiz esses ajustes:
friction/atrito = 1
gravidade = 9,81
drag(normal e o angular) = 0
massa do bloco = 1
usando o rigibody 2D e o force mode impulse.
Meu professor de física me pediu para usar essa formula
Distancia = Velocidade*Velocidade/(2* coeficiente de atrito * gravidade)
e se eu aplicar uma força de 60 N, a distância daria aproximadamente 183,5 metros.
Porém quando uso o addforce para aplicar 60N na "direita"(1,0,0), o jogo computa que ele percorreu + ou -289,5 metros.
Alguém pode me ajuda a resolver esse problema, ou me explicar como funciona melhor o calculo que o addforce faz?
OBS: não sei se é normal, mas quando vejo a velocidade do rigibody, quando o bloco está em movimento, o valor da velocidade Y também fica mudando, isso pode influenciar a conta também?
lucasmon- Iniciante
- PONTOS : 2620
REPUTAÇÃO : 0
Respeito as regras :
Re: Calculando a distância percorrida do addforce
Olá @lucasmon, acredito que teu conceito se chama: Tragetória Balística.
Enfim, andei pesquisando, e, provavelmente essa seja tua solução.
http://answers.unity3d.com/questions/384515/addforce-to-go-a-specific-distance-and-height.html
Boa sorte!
Enfim, andei pesquisando, e, provavelmente essa seja tua solução.
http://answers.unity3d.com/questions/384515/addforce-to-go-a-specific-distance-and-height.html
Boa sorte!
eusouoglaydson- Iniciante
- PONTOS : 2914
REPUTAÇÃO : 4
Respeito as regras :
Re: Calculando a distância percorrida do addforce
darei uma olhada nisso XD.eusouoglaydson escreveu:Olá @lucasmon, acredito que teu conceito se chama: Tragetória Balística.
Enfim, andei pesquisando, e, provavelmente essa seja tua solução.
http://answers.unity3d.com/questions/384515/addforce-to-go-a-specific-distance-and-height.html
Boa sorte!
Mas tipo, o que eu queria mesmo é empurrar um bloco e ele fica arrastando no chão, e não "jogar" ele no ar.
lucasmon- Iniciante
- PONTOS : 2620
REPUTAÇÃO : 0
Respeito as regras :
Re: Calculando a distância percorrida do addforce
Como você está aplicando o AddForce?
Outra coisa, a Unity trabalha simulando a física a uma taxa fixa de 50Hz, e isto pode ser um pouco impreciso para cálculos matemáticos... se quer mais precisão, vá em:
Edit>Project settings>Time
Lá tem uma opção chamada "Fixed Timestep", que corresponde ao tempo (em segundos) que vai demorar entre as chamadas da void "FixedUpdate", e também, da simulação de física da própria Unity...
o valor padrão é 0.02, ou seja, 50x por segundo.
Tente diminuir este alor para 0.002 e veja os resultados. Mas tenha em mente que quanto menor o valor, mais pesada será a simulação, pois 0.002 são 500 simulações por segundo.
Outra coisa, a Unity trabalha simulando a física a uma taxa fixa de 50Hz, e isto pode ser um pouco impreciso para cálculos matemáticos... se quer mais precisão, vá em:
Edit>Project settings>Time
Lá tem uma opção chamada "Fixed Timestep", que corresponde ao tempo (em segundos) que vai demorar entre as chamadas da void "FixedUpdate", e também, da simulação de física da própria Unity...
o valor padrão é 0.02, ou seja, 50x por segundo.
Tente diminuir este alor para 0.002 e veja os resultados. Mas tenha em mente que quanto menor o valor, mais pesada será a simulação, pois 0.002 são 500 simulações por segundo.
Re: Calculando a distância percorrida do addforce
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Cubo : MonoBehaviour
{
Vector2 begin;
public GameObject al;
public float força;
public bool act1 = false, act2 = false;
public double inicio, total;
// Use this for initialization
void Start ()
{
inicio = System.Math.Round (transform.position.x,2);
begin = new Vector2 (-5f, -1.485f);
}
// Update is called once per frame
void FixedUpdate ()
{
Alavanca ala = al.GetComponent<Alavanca>();
força = ala.Calculo;
Rigidbody2D rb = GetComponent<Rigidbody2D> ();
if (act1 && !act2)
{
rb.AddForce ( Vector2.right * força, ForceMode2D.Impulse);
print (rb.velocity.x);
act2 = true;
}
if (act2 && act1)
{
if(rb.velocity.x == 0)
{
act1 = false;
}
}
total = System.Math.Round (transform.position.x,2) - inicio;
}
void OnGUI ()
{
GUI.Label (new Rect (0,0,200,100), "Força: "+força+"\n"+"Posição: "+total);
if (!act1 && !act2)
{
if (GUI.Button (new Rect (0, 40, 100, 50), "Empurre"))
{
act1 = true;
}
}
if (act2 && !act1)
{
if (GUI.Button (new Rect (0, 40, 100, 50), "Recomeçar"))
{
transform.position = begin;
act2 = false;
}
}
}
}
Então, esse é código do meu bloco, ele vai receber um valor da minha alavanca, que será uma força em newtons.
assim que eu apertar o botão começar, o meu bloco irá utilizar o valor vindo da alavanca e ele será empurrado até ele parar. ele para na posição 289.6 metros, porém pelos calculos do meu professor de física ele deveria parar na posição de 35 metros.(utilizando 1 como coeficiente de atrito, 1 kg de massa e 60N).
quando eu chegar em casa eu vou mudar o timestep pra ver se vai funcionar, obrigado XD
MarcosSchultz escreveu:Como você está aplicando o AddForce?
Outra coisa, a Unity trabalha simulando a física a uma taxa fixa de 50Hz, e isto pode ser um pouco impreciso para cálculos matemáticos... se quer mais precisão, vá em:
Edit>Project settings>Time
Lá tem uma opção chamada "Fixed Timestep", que corresponde ao tempo (em segundos) que vai demorar entre as chamadas da void "FixedUpdate", e também, da simulação de física da própria Unity...
o valor padrão é 0.02, ou seja, 50x por segundo.
Tente diminuir este alor para 0.002 e veja os resultados. Mas tenha em mente que quanto menor o valor, mais pesada será a simulação, pois 0.002 são 500 simulações por segundo.
Meu código está assim:
lucasmon- Iniciante
- PONTOS : 2620
REPUTAÇÃO : 0
Respeito as regras :
Re: Calculando a distância percorrida do addforce
outra coisa que você pode fazer... crie um novo 'PhysicsMaterial' e associe ao colisor do objeto que é o chão e também ao objeto que é o cubo...
Nesse physicsMaterial você pode configurar o atrito das faces
Nesse physicsMaterial você pode configurar o atrito das faces
Re: Calculando a distância percorrida do addforce
MarcosSchultz escreveu:outra coisa que você pode fazer... crie um novo 'PhysicsMaterial' e associe ao colisor do objeto que é o chão e também ao objeto que é o cubo...
Nesse physicsMaterial você pode configurar o atrito das faces
vou rever sobre isso, eu tinha feito isso, mas como nçao vi muita diferença, só deixei o material pro chão
lucasmon- Iniciante
- PONTOS : 2620
REPUTAÇÃO : 0
Respeito as regras :
Re: Calculando a distância percorrida do addforce
MarcosSchultz escreveu:outra coisa que você pode fazer... crie um novo 'PhysicsMaterial' e associe ao colisor do objeto que é o chão e também ao objeto que é o cubo...
Nesse physicsMaterial você pode configurar o atrito das faces
Po cara suas dicas ajudaram bastante, mudei o timestep e botei atrito no cubo e agora ta funcionando direitinho *.*.
Só que de vez em quando, quando eu empurro o objeto, ele tropeça no meio do caminho =\.(tipo tem horas que ele vai normal, e nas outras ele tropeça, e com o impulso e massa no mesmo valor )
lucasmon- Iniciante
- PONTOS : 2620
REPUTAÇÃO : 0
Respeito as regras :
Tópicos semelhantes
» Problema com Addforce no pulo HELP
» navmeshagent Duvida sobre a distancia percorrida
» Não consigo usar o .AddForce Unity
» Duvida Com AddForce
» Com AddForce o RigidBody não Gira?
» navmeshagent Duvida sobre a distancia percorrida
» Não consigo usar o .AddForce Unity
» Duvida Com AddForce
» Com AddForce o RigidBody não Gira?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos