Lançar Granada
4 participantes
Página 1 de 1
Lançar Granada
Estou tentando fazer um script que calcule o ponto em que a minha granada vai atingir o chão depois de ser lançada, eu encontrei um tutorial que ensina a calcular a velocidade que o objeto será lançado em relação a sua posição e a posição do alvo, só que nesse tutorial esta sendo usado a posição do mouse como alvo, então eu estou tentando adaptar esses script para que no lugar da posição do mouse seja usado uma posição que vai ser calculada pelo ângulo do objeto só que não estou conseguindo.
Esse é o script que estou usando pra calcular a velocidade.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GranadeHandler : MonoBehaviour
{
public Rigidbody bulletPrefabs;
public GameObject alvo;
public LayerMask layer;
public float angle
Vector3 CalculateVelocity(Vector3 target, Vector3 origin, float Time){
//Defini a distancia X e Y primeiro
Vector3 distance = target - origin;
Vector3 distanceXZ = distance;
distanceXZ.y = 0f;
//Criar um float que representa nossa distancia
float Sy = distance.y;
float Sxz = distanceXZ.magnitude;
float Vxz = Sxz / Time;
float Vy = Sy / Time + 0.5f * Mathf.Abs(Physics.gravity.y) * Time;
Vector3 result = distanceXZ.normalized;
result *= Vxz;
result.y = Vy;
return result;
}
}
Esse é o script que estou usando pra calcular a velocidade.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GranadeHandler : MonoBehaviour
{
public Rigidbody bulletPrefabs;
public GameObject alvo;
public LayerMask layer;
public float angle
Vector3 CalculateVelocity(Vector3 target, Vector3 origin, float Time){
//Defini a distancia X e Y primeiro
Vector3 distance = target - origin;
Vector3 distanceXZ = distance;
distanceXZ.y = 0f;
//Criar um float que representa nossa distancia
float Sy = distance.y;
float Sxz = distanceXZ.magnitude;
float Vxz = Sxz / Time;
float Vy = Sy / Time + 0.5f * Mathf.Abs(Physics.gravity.y) * Time;
Vector3 result = distanceXZ.normalized;
result *= Vxz;
result.y = Vy;
return result;
}
}
marx478- Membro
- PONTOS : 2212
REPUTAÇÃO : 3
Respeito as regras :
Re: Lançar Granada
como halo:spartan assalt?
LUCASkkk- Iniciante
- PONTOS : 1623
REPUTAÇÃO : 1
Áreas de atuação : unity, blender, editor de vídeo (de péssimo gosto)
é eu acho que só
contato: llmlucmarleo@gmail.c
Respeito as regras :
Re: Lançar Granada
Sim, mas estou fazendo um FPS
marx478- Membro
- PONTOS : 2212
REPUTAÇÃO : 3
Respeito as regras :
Re: Lançar Granada
Cara, você tem um Rigidbody, sendo simulado a 50Hz.. você vai ter que meio que fazer umas 1000 interpolações fazendo cálculos de física mesmo, para ter uma idéia de onde a granada vai parar.
Tipo, tem que pegar a equação da velocidade do corpo rígido, e fazer um for que vai de 0 a 1000, e simular todos esses steps, para descobrir o paradeiro do objeto. É fazível, mas é complexo.
É um efeito realmente necessário para o seu game? Eu só imagino esse jeito de fazer, talvez exista algum jeito mais fácil, mas eu n to conseguindo vislumbrar agora.
Ahh, se for realmente necessário, e ninguém conseguir ajudar, talvez isso sirva:
https://assetstore.unity.com/packages/tools/physics/trajectory-predictor-55752
Tipo, tem que pegar a equação da velocidade do corpo rígido, e fazer um for que vai de 0 a 1000, e simular todos esses steps, para descobrir o paradeiro do objeto. É fazível, mas é complexo.
É um efeito realmente necessário para o seu game? Eu só imagino esse jeito de fazer, talvez exista algum jeito mais fácil, mas eu n to conseguindo vislumbrar agora.
Ahh, se for realmente necessário, e ninguém conseguir ajudar, talvez isso sirva:
https://assetstore.unity.com/packages/tools/physics/trajectory-predictor-55752
Re: Lançar Granada
Não é um efeito necessario, so me deu uma curiosidade sobre esse assunto, ai estava querendo descobrir alguma forma de fazer.
marx478- Membro
- PONTOS : 2212
REPUTAÇÃO : 3
Respeito as regras :
Re: Lançar Granada
Eu iria na direção oposta, ao invés de calcular a trajetória, eu definiria onde ela iria cair e calcularia a força necessária pra jogar lá kk
Isso aqui pode te ajudar se considerar seguir esse caminho.
Com um raycast você define a posição onde vai cair, e pode realizar uma checagem, por exemplo: se a distância onde a mira está é menor que 30 metros em relação ao player, pro cara não jogar tão longe...
Também pode definir um raio de precisão, pra granada não ir certinha sempre.
Isso aqui pode te ajudar se considerar seguir esse caminho.
Com um raycast você define a posição onde vai cair, e pode realizar uma checagem, por exemplo: se a distância onde a mira está é menor que 30 metros em relação ao player, pro cara não jogar tão longe...
Também pode definir um raio de precisão, pra granada não ir certinha sempre.
Fagner- Moderador
- PONTOS : 4443
REPUTAÇÃO : 667
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :
Re: Lançar Granada
Obrigado, vou ver esse vídeo
marx478- Membro
- PONTOS : 2212
REPUTAÇÃO : 3
Respeito as regras :
Tópicos semelhantes
» Granada
» como lançar objetos ao apertar uma tecla unity5
» Como lançar um objeto para um local via touch?
» Segurar e lançar objeto 3D Mobile
» vamos formar uma equipe pra lançar um jogo
» como lançar objetos ao apertar uma tecla unity5
» Como lançar um objeto para um local via touch?
» Segurar e lançar objeto 3D Mobile
» vamos formar uma equipe pra lançar um jogo
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos