Raycast em circulos(point to ckick)
2 participantes
Página 1 de 1
Raycast em circulos(point to ckick)
E o seguinte galera;
Tenho o script abaixo, e a logica e simpre: mecanica de RTS (point to ckick) mais animacao;
Os problemas sao dois:
1º Tem horas que vai ate o ponto normalmente mas, as vezes ele fica girando em torno do ponto e depois para.
2º Quando coloquei a animaçao ele vai ate o ponto, mas fica setando a animaçao de andar, mesmo que esteja no ponto onde cliquei e seja o ponto final;
Tenho o script abaixo, e a logica e simpre: mecanica de RTS (point to ckick) mais animacao;
Os problemas sao dois:
1º Tem horas que vai ate o ponto normalmente mas, as vezes ele fica girando em torno do ponto e depois para.
2º Quando coloquei a animaçao ele vai ate o ponto, mas fica setando a animaçao de andar, mesmo que esteja no ponto onde cliquei e seja o ponto final;
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class Mov : MonoBehaviour {
NavMeshAgent playerAgent;
Animator anim;
//Rigidbody rb;
public LayerMask ground;
// Use this for initialization
void Start()
{
playerAgent = GetComponent<NavMeshAgent>();
anim = GetComponent<Animator>();
//rb = GetComponent<Rigidbody>();
}
// Update is called once per frame
void Update()
{
if (Input.GetButtonDown("Fire2") && !UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject())
{
GetInteraction();
}
}
void GetInteraction()
{
Ray interactionRay = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit interactionInfo;
if (Physics.Raycast(interactionRay, out interactionInfo, ground))
{
Debug.DrawRay(interactionRay.origin, interactionRay.direction * interactionInfo.distance, Color.red);
GameObject interactedObject = interactionInfo.collider.gameObject;
if (interactedObject.tag == "BamboGreen")
{
Debug.Log("Objected");
anim.SetBool("Move", false);
}
// else if (rb.velocity.z <= 0)
//{
// anim.SetBool("Move", false);
//}
else
{
playerAgent.destination = interactionInfo.point;
http://Debug.Log("Moviment");
anim.SetBool("Move", true);
}
}
}
}
Ronnisz- Iniciante
- PONTOS : 2651
REPUTAÇÃO : 1
Respeito as regras :
Re: Raycast em circulos(point to ckick)
Ajuste o no NavMeshAgent para autoBraking e coloque o stopDistance em mais ou menos 2 ou em um valor que preferir!Ronnisz escreveu:E o seguinte galera;
Tenho o script abaixo, e a logica e simpre: mecanica de RTS (point to ckick) mais animacao;
Os problemas sao dois:
1º Tem horas que vai ate o ponto normalmente mas, as vezes ele fica girando em torno do ponto e depois para.
2º Quando coloquei a animaçao ele vai ate o ponto, mas fica setando a animaçao de andar, mesmo que esteja no ponto onde cliquei e seja o ponto final;
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class Mov : MonoBehaviour {
NavMeshAgent playerAgent;
Animator anim;
//Rigidbody rb;
public LayerMask ground;
// Use this for initialization
void Start()
{
playerAgent = GetComponent<NavMeshAgent>();
anim = GetComponent<Animator>();
//rb = GetComponent<Rigidbody>();
}
// Update is called once per frame
void Update()
{
if (Input.GetButtonDown("Fire2") && !UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject())
{
GetInteraction();
}
}
void GetInteraction()
{
Ray interactionRay = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit interactionInfo;
if (Physics.Raycast(interactionRay, out interactionInfo, ground))
{
Debug.DrawRay(interactionRay.origin, interactionRay.direction * interactionInfo.distance, Color.red);
GameObject interactedObject = interactionInfo.collider.gameObject;
if (interactedObject.tag == "BamboGreen")
{
Debug.Log("Objected");
anim.SetBool("Move", false);
}
// else if (rb.velocity.z <= 0)
//{
// anim.SetBool("Move", false);
//}
else
{
playerAgent.destination = interactionInfo.point;
//Debug.Log("Moviment");
anim.SetBool("Move", true);
}
}
}
}
Re: Raycast em circulos(point to ckick)
recagonlei escreveu:Ajuste o no NavMeshAgent para autoBraking e coloque o stopDistance em mais ou menos 2 ou em um valor que preferir!Ronnisz escreveu:E o seguinte galera;
Tenho o script abaixo, e a logica e simpre: mecanica de RTS (point to ckick) mais animacao;
Os problemas sao dois:
1º Tem horas que vai ate o ponto normalmente mas, as vezes ele fica girando em torno do ponto e depois para.
2º Quando coloquei a animaçao ele vai ate o ponto, mas fica setando a animaçao de andar, mesmo que esteja no ponto onde cliquei e seja o ponto final;
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class Mov : MonoBehaviour {
NavMeshAgent playerAgent;
Animator anim;
//Rigidbody rb;
public LayerMask ground;
// Use this for initialization
void Start()
{
playerAgent = GetComponent<NavMeshAgent>();
anim = GetComponent<Animator>();
//rb = GetComponent<Rigidbody>();
}
// Update is called once per frame
void Update()
{
if (Input.GetButtonDown("Fire2") && !UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject())
{
GetInteraction();
}
}
void GetInteraction()
{
Ray interactionRay = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit interactionInfo;
if (Physics.Raycast(interactionRay, out interactionInfo, ground))
{
Debug.DrawRay(interactionRay.origin, interactionRay.direction * interactionInfo.distance, Color.red);
GameObject interactedObject = interactionInfo.collider.gameObject;
if (interactedObject.tag == "BamboGreen")
{
Debug.Log("Objected");
anim.SetBool("Move", false);
}
// else if (rb.velocity.z <= 0)
//{
// anim.SetBool("Move", false);
//}
else
{
playerAgent.destination = interactionInfo.point;
//Debug.Log("Moviment");
anim.SetBool("Move", true);
}
}
}
}
Poderia mostrar mais ou menos..tentei aki e n deu muito certo..
De qualquer jeito j´´a agradeço
Ronnisz- Iniciante
- PONTOS : 2651
REPUTAÇÃO : 1
Respeito as regras :
Re: Raycast em circulos(point to ckick)
No inspector, no objecto que tenha o NavMeshAgent, terá essas variáveis... O que aconteceu que não deu muito certo?
Re: Raycast em circulos(point to ckick)
Alterei...mas ele ainda fica rodando...recagonlei escreveu:No inspector, no objecto que tenha o NavMeshAgent, terá essas variáveis... O que aconteceu que não deu muito certo?
fora o bug da animacao....
Ronnisz- Iniciante
- PONTOS : 2651
REPUTAÇÃO : 1
Respeito as regras :
Re: Raycast em circulos(point to ckick)
Faça assim que pode ficar melhor... Desative o auto braking, e na função Update, detecte quando tiver andando e com a variável remaingDistance, você pare com a função isStopped quando chegar a um valor mínimo que você quiser... Quando chegar no valor que setar o isStopped você passa a variavel da animação para parar de andar também...
Tópicos semelhantes
» [Dúvida] Erro com função raycast (.point)
» Animação de andar em jogo point click
» Raycast - Spawnar objeto na colisão do raycast
» Atirar conforme o point do mouse
» Point Light com qualidade horrivel, o que pode ser?
» Animação de andar em jogo point click
» Raycast - Spawnar objeto na colisão do raycast
» Atirar conforme o point do mouse
» Point Light com qualidade horrivel, o que pode ser?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos