[RESOLVIDO] Float to transform
2 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Float to transform
é possível tendo uma variável do tipo float, ao tentar fazer cálculos entre esta variável e outra e pretendendo assim a posição no mundo fazer
transnform.(o nome da variável).position? ou o tipo da variável tem mesmo de ser do tipo transform?
transnform.(o nome da variável).position? ou o tipo da variável tem mesmo de ser do tipo transform?
Joana- Avançado
- PONTOS : 1641
REPUTAÇÃO : 16
Respeito as regras :
Re: [RESOLVIDO] Float to transform
Não ficou claro o que quer, poderia postar o script e dar um contexto sobre o que pretende fazer?
Fagner- Moderador
- PONTOS : 4443
REPUTAÇÃO : 667
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :
Re: [RESOLVIDO] Float to transform
public float Npcposiçao;
public float playerPos;
public void Searching()
{
distance = Vector3.Distance(transform.playerPosition.position, transform.npcPosition.position);
ter isso assim em vez de assim:
public Trasnform Npcposiçao;
public Trasnform playerPos;
public void Searching()
{
distance = Vector3.Distance(playerPosition.position, npcPosition.position);
}
public float playerPos;
public void Searching()
{
distance = Vector3.Distance(transform.playerPosition.position, transform.npcPosition.position);
ter isso assim em vez de assim:
public Trasnform Npcposiçao;
public Trasnform playerPos;
public void Searching()
{
distance = Vector3.Distance(playerPosition.position, npcPosition.position);
}
Joana- Avançado
- PONTOS : 1641
REPUTAÇÃO : 16
Respeito as regras :
Re: [RESOLVIDO] Float to transform
Tem algum motivo especial pra esses valores serem floats? É que o quer fazer é bem incomum, talvez entendendo melhor o problema, posso te sugerir uma solução.
Última edição por Fagner em Dom Jan 10, 2021 2:35 pm, editado 1 vez(es)
Fagner- Moderador
- PONTOS : 4443
REPUTAÇÃO : 667
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :
Re: [RESOLVIDO] Float to transform
já agora, estou com outro problema os transforms nao estão a dar.
outra pergunta básica, queria que os meus npc seguissem o player, a função follow esta bem feita?
outra pergunta básica, queria que os meus npc seguissem o player, a função follow esta bem feita?
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NpcFollow : Node
{
public float npcVelocity;//velocidade do npc
public float npcRadius = 3f;//distancia entre o npc e o player
NpcSeraching searching;
public int MaxDist = 10;
public int MinDist = 5;
public NpcFollow(float npcVelocity, float npcRadius)
{
this.npcVelocity = npcVelocity;
this.npcRadius = npcRadius;
}
public override NodeState Evaluate()
{
searching.SearchingForPlayer();
if (searching.distance <= searching.npcRange)
{
nodeState = NodeState.SUCCESS;
searching.SearchingForPlayer();
Stalker();
}
else
{
nodeState = NodeState.FAILURE;
}
return (NodeState)searching.distance;
}
public void Stalker()
{
if (Vector3.Distance(transform.position, searching.playerPosition.position) >= MinDist)
{
transform.position += transform.forward * npcVelocity * Time.deltaTime;
}
}
}
Joana- Avançado
- PONTOS : 1641
REPUTAÇÃO : 16
Respeito as regras :
Re: [RESOLVIDO] Float to transform
stalker queria dizer
Joana- Avançado
- PONTOS : 1641
REPUTAÇÃO : 16
Respeito as regras :
Re: [RESOLVIDO] Float to transform
Vejo que está usando uma behaviour tree pra IA, isso é bom.
Sobre a função stalker, pelo que entendi o npc segue o player caso ele se afaste uma certa distância, mas pelo que vi você está movendo o transform diretamente, isso vai fazer seu npc não levar em conta os colisores do cenário e/ou obstáculos. Seria melhor se movesse o character controller (caso não tenha obstáculos) ou o navmesh agent, (caso seu terreno seja acidentado e com obstáculos)
Sobre a função stalker, pelo que entendi o npc segue o player caso ele se afaste uma certa distância, mas pelo que vi você está movendo o transform diretamente, isso vai fazer seu npc não levar em conta os colisores do cenário e/ou obstáculos. Seria melhor se movesse o character controller (caso não tenha obstáculos) ou o navmesh agent, (caso seu terreno seja acidentado e com obstáculos)
Fagner- Moderador
- PONTOS : 4443
REPUTAÇÃO : 667
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :
Re: [RESOLVIDO] Float to transform
então penso que nao estou a fazer bem, qyeria que o npc seguisse o player caso ele se aproximasse do range do player e depois sim se move-se, contudo teria de chegar as colisõe,.
como posso fazer isso
como posso fazer isso
Joana- Avançado
- PONTOS : 1641
REPUTAÇÃO : 16
Respeito as regras :
Re: [RESOLVIDO] Float to transform
todos os transforms me estão a dar erro, sabe porque?
Joana- Avançado
- PONTOS : 1641
REPUTAÇÃO : 16
Respeito as regras :
Re: [RESOLVIDO] Float to transform
Nesse caso, acredito que seja melhor você adicionar uma navmesh ao seu terreno, informar quais objetos são obstáculos, e fornecer apenas a posição de destino pro navmesh agent, ele vai se encarregar de desviar dos obstáculos enquanto alcança o destino.
Sobre a função stalker, precisa inverter o >= para <= para funcionar como você descreveu.
Sobre a função stalker, precisa inverter o >= para <= para funcionar como você descreveu.
Fagner- Moderador
- PONTOS : 4443
REPUTAÇÃO : 667
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :
Re: [RESOLVIDO] Float to transform
não posso usar navmesh
Joana- Avançado
- PONTOS : 1641
REPUTAÇÃO : 16
Respeito as regras :
Re: [RESOLVIDO] Float to transform
#edit Apenas para deixar a solução aqui:
A classe herdava de outra classe abstrata, e não do monoBehaviour, o que fez Joana querer alterar o transform pra float, visto que, pro transform funcionar, a classe precisa herdar do monoBehavior e estar em um gameobject.
Existem várias soluções:
Separar os scripts, deixando a IA responsável apenas IA e outra classe cuidando do movimento.
herdar do monoBehaviour, caso o script não seja instanciado com a palavra new.
Passar o componente "transform" no construtor, via parâmetro;
...
---------------------------------------------------------------------------------------------------------------------
Sem a navmesh, você pode usar alguns pontos fixos pra calcular a rota usando o algoritmo A*(A Star), e mover os npcs usando Character Controller.
A classe herdava de outra classe abstrata, e não do monoBehaviour, o que fez Joana querer alterar o transform pra float, visto que, pro transform funcionar, a classe precisa herdar do monoBehavior e estar em um gameobject.
Existem várias soluções:
Separar os scripts, deixando a IA responsável apenas IA e outra classe cuidando do movimento.
herdar do monoBehaviour, caso o script não seja instanciado com a palavra new.
Passar o componente "transform" no construtor, via parâmetro;
...
---------------------------------------------------------------------------------------------------------------------
Sem a navmesh, você pode usar alguns pontos fixos pra calcular a rota usando o algoritmo A*(A Star), e mover os npcs usando Character Controller.
Fagner- Moderador
- PONTOS : 4443
REPUTAÇÃO : 667
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] Como faço para um transform.position receber um novo transform dentro de um if
» [RESOLVIDO] Como transformar uma float em uma String?
» [resolvido]enfiar float no UItext por script
» [RESOLVIDO] Converter string em virgula em float (decimal)
» [RESOLVIDO]O que faz o Transform.TransformDirection
» [RESOLVIDO] Como transformar uma float em uma String?
» [resolvido]enfiar float no UItext por script
» [RESOLVIDO] Converter string em virgula em float (decimal)
» [RESOLVIDO]O que faz o Transform.TransformDirection
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos