Duvida - Movimento de inseto (2d)
3 participantes
Página 1 de 1
Duvida - Movimento de inseto (2d)
Galera, estou com uma duvida bem simples.. estou fazendo um script de movimentação aleatória dentro de um range.. Estou fazendo da seguinte forma: Existe um ponto central, e ele se move em uma direção aleatoria, ai quando ele atinge uma distancia x do ponto central (range), ele deve retornar para o ponto central, e quando chegar ao ponto central ir em uma direção aleatória novamente... Mas não estou conseguindo acertar o vector da direção que ele deve seguir para chegar no centro novamente..
Só para contextualizar, quero fazer algo como a movimentação de um inseto, onde ele se movimenta aleatoriamente mas sem sair daquela pequena regiao dele...
Podem me ajudar? Obrigado!
Só para contextualizar, quero fazer algo como a movimentação de um inseto, onde ele se movimenta aleatoriamente mas sem sair daquela pequena regiao dele...
Podem me ajudar? Obrigado!
geeksou- Designer
- PONTOS : 3839
REPUTAÇÃO : 44
Idade : 30
Respeito as regras :
Re: Duvida - Movimento de inseto (2d)
Você mede até onde ele vai andar e faz os calculos para gerar a aleatoriedade que precisar ai salva num Vector3 e vai setando como target e quando ele chegar a X de distancia do centro seta para ele voltar com o navmesh assim daria para ele contornar obstaculos durante a aleatoriedade
mrariel2011- Avançado
- PONTOS : 3364
REPUTAÇÃO : 6
Idade : 25
Áreas de atuação : Modelagem(Basica)
Programação js, c#
Respeito as regras :
Re: Duvida - Movimento de inseto (2d)
É então, na teoria é uma maravilha... não seria necessário navMesh, pois o jogo é 2d e o objeto que vai usar isso é Is Trigger true, eu tentei de inúmeras formas.. mas algo sempre da errado... O que me frustra é que era pra ser algo tão simples e to levando uma pisa...mrariel2011 escreveu:Você mede até onde ele vai andar e faz os calculos para gerar a aleatoriedade que precisar ai salva num Vector3 e vai setando como target e quando ele chegar a X de distancia do centro seta para ele voltar com o navmesh assim daria para ele contornar obstaculos durante a aleatoriedade
O que quero fazer é exatamente isso:
fazer uma sprite 2d se mover aleatoriamente nos eixos x e y, mas sem ultrapassar o range máximo!
geeksou- Designer
- PONTOS : 3839
REPUTAÇÃO : 44
Idade : 30
Respeito as regras :
Re: Duvida - Movimento de inseto (2d)
- Código:
using UnityEngine;
using System.Collections;
public class Mover : MonoBehaviour {
public float DistanciaMax = 2, velocidade = 1;
Vector2 posicCentral, posicAleatoria;
bool moverParaDestino;
void Start () {
posicCentral = transform.position;
moverParaDestino = false;
}
void Update () {
if (Vector2.Distance (transform.position, posicCentral) < 0.1f && moverParaDestino == false) {
moverParaDestino = true;
posicAleatoria = new Vector2 (posicCentral.x + Random.Range (-DistanciaMax, DistanciaMax), posicCentral.y + Random.Range (-DistanciaMax, DistanciaMax));
}
if (Vector2.Distance (transform.position, posicAleatoria) < 0.1f && moverParaDestino == true) {
moverParaDestino = false;
}
if (moverParaDestino == true) {
transform.position = Vector2.Lerp (transform.position, posicAleatoria, Time.deltaTime * velocidade);
} else {
transform.position = Vector2.Lerp (transform.position, posicCentral, Time.deltaTime * velocidade);
}
}
}
Se quiser um movimento mais contínuo, pode utilizar o MoveTowards em vez do Lerp
Re: Duvida - Movimento de inseto (2d)
Muito obrigado Marcos! Você é o cara =D
Só dei uma alterada para contemplar também movimentos contínuos que vc até sitou no final do post, Obrigado!
Só dei uma alterada para contemplar também movimentos contínuos que vc até sitou no final do post, Obrigado!
- Código:
using UnityEngine;
using System.Collections;
using Assets.Dominio.Game;
public class MovimentarAleatoriamente : MonoBehaviour
{
public float DistanciaMax = 2, velocidade = 1;
public bool continuo;
Vector2 posicCentral, posicAleatoria;
bool moverParaDestino;
void Start()
{
posicCentral = transform.position;
moverParaDestino = false;
}
void Update()
{
if (Vector2.Distance(transform.position, posicCentral) < 0.1f && moverParaDestino == false)
{
moverParaDestino = true;
posicAleatoria = new Vector2(posicCentral.x + Random.Range(-DistanciaMax, DistanciaMax), posicCentral.y + Random.Range(-DistanciaMax, DistanciaMax));
}
if (Vector2.Distance(transform.position, posicAleatoria) < 0.1f && moverParaDestino == true)
{
moverParaDestino = false;
}
if (moverParaDestino == true)
{
if(continuo)
transform.position = Vector2.MoveTowards(transform.position, posicAleatoria, Time.deltaTime * velocidade);
else
transform.position = Vector2.Lerp(transform.position, posicAleatoria, Time.deltaTime * velocidade);
}
else
{
if (continuo)
transform.position = Vector2.MoveTowards(transform.position, posicCentral, Time.deltaTime * velocidade);
else
transform.position = Vector2.Lerp(transform.position, posicCentral, Time.deltaTime * velocidade);
}
}
}
geeksou- Designer
- PONTOS : 3839
REPUTAÇÃO : 44
Idade : 30
Respeito as regras :
Tópicos semelhantes
» [DUVIDA] Controle do movimento do ricocheteio de object 2D
» (Dúvida) Como acessar o sensor de movimento do Android?
» [DÚVIDA] ANIMAÇÃO DE PULO NO CONTROLADOR QUE TEM BLEND TREE COM MOVIMENTO
» Dúvida aplicando tutorial do Angry Birds em camera perspective e veiculo em movimento
» [Duvida] Duvida Com script de mover em direção ao mouse.
» (Dúvida) Como acessar o sensor de movimento do Android?
» [DÚVIDA] ANIMAÇÃO DE PULO NO CONTROLADOR QUE TEM BLEND TREE COM MOVIMENTO
» Dúvida aplicando tutorial do Angry Birds em camera perspective e veiculo em movimento
» [Duvida] Duvida Com script de mover em direção ao mouse.
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos