SchultzGames
Para tirar dúvidas, crie um tópico especifico na área "Dúvidas em Geral" e aguarde ser respondido. Evite comentar em tópicos não relacionados a sua dúvida :D
TÓPICOS RECENTES:
Tópico:
Postado em:
Postado por:
Animações Bugando ao trocar Ajuda aqui na moral
Ajuda com IA
Alguem sabe se existe uma função parecida a OnMouseEnter para Touch
Cubo sendo esvaziado 3D
Esta versão não está em conformidade com o requisito de 64 bits do Google Play
Código de Joystick obsoleto que o Unity pede para atualizar
Sobre reflexão de luzes no unity e flares
Como salvar tudo de uma que esta em uma scene?
Rotação para inimigo
[Formação de Equipe] Quando foi ontem?
Como posso resolver o erro "NullRefenceException" da unity
Como passo variáveis entre Cenas?
[Duvida] Sistema de movimentação de personagem em 4 direções.
Melhore a IA dos seus jogos - IA do Creeper
Jogo de luta - multiplayer local
PRECISO DE AJUDA URGENTE !!!
DESAFIO MULTPLAYER
[TUTORIAL] Passar Valores entre cenas
Como sobreponho um sprite num objeto em que ambos colidem?
Click na tela Mobile/PC
Bug Animation <não fica em loop> Unity 2019.4
PRECISO DE UMA PESSOA QUE SAIBA MECHER COM ONLINE NO UNITY
Meu Proprio remake de siren head (em 24hrs)
Troca de fase
[TUTORIAL] AI Enemy ( Jogos de terror )
Um unico script de status serve pra todos em geral?
quero que a camera gire como o personagem mais nao consigo
The scripts needs to derive from monobehaviour
[TUTORIAL] Pegar e Dropar item no chao.[2.0]
COMO EXECUTAR FUNÇÃO A CADA PERÍODO DE TEMPO
Textura realistas
Sistema de Pontuação (Dúvida)
Como deixar a barra de vida fixa??
[TUTORIAL] Usando Pos Processamento
Humanoid
FPS KIT 1.0 - EM DESENVOLVIMENTO
Alguém pode me ajuda a coloca animação quando anda?
Mudar cena ao ativar um objeto
Escape the Danonão (Jogo de terror do Danonão Grosso no estilo Slender)
UI duplicando numeração usando SceneManager.LoadScene
AssetBundle não renderiza
Lets Play RPG - No editor funciona perfeito, porem dps de compilado nao funciona.
PAUSE PARCIAL
duvida sobre C# e unity
Como Add Fog em lugar no mundo específico
Como criar sistema de Habilidades (Skills) para o personagem 2D / e sistema de batalha 2D
Como identificar o vencedor em uma corrida multiplayer?
Sistema de desaceleração usando MovePosition
Alguém poderia me ajuda?
Como fazer um ciclo dia e noite com transição de skyboxes?
Como limito um movimento de modo a que não se movimente na diagonal?
[TUTORIAL] Sistema de DIA E NOITE completo, com luzes noturnas e SISTEMA DE NUVENS
Animaçao de sacar arma
Movimentaçao de personagem 3d
Rotacionar objeto de acordo com direção que ele está se movendo
Dúvida com o IEnumertor
[DUVIDA]como coloco um audio enquanto uma esfera roda
Fear - Modern House The Game [WINDOWS - ANDROID]
Sistema de pulo 2d
COMO MUDAR GETKEY WASD PARA GETBUTTON HORIZONTAL E VERTICAL ???
TOCAR SONS REPETIDAMENTE
Duvida sobre o forum
Explicacao de GD para CSharp[GODOT]
Tutorial Game de Plataforma 2D[GODOT]
Tutorial Inteligencia Artificial 2D[GODOT]
Sistema de vitória em um jogo multiplayer (photon 2)
Movimentar inimigo em posições aleatorias
Parallax travando, segue o código que utilizo
Jogo Maria Bella
Joystick Mobile do Marcos Schult
[RESOLVIDO] Pegar um frame no animation via C# Unity 3D
[AJUDA] NavMesh bugado
Jogo de Galo e de Galinha também
Movimento com Botões Unity 3D
[Dúvida] posições de objetos e âncora
Meu player não se move
um erro inicial no unity
UNITY CRASHANDO
[TUTORIAL] Criar árvores fácilmente com o criador de árvores da Unity
Tela cinza ao usar SPLASH IMAGE - UNITY
[TUTORIAL] Resolvido - Erro fatal! Estouro de tamanho no alocador
Como fazer o Player ir para a frente dele, independente da orientação?
[Dúvida] pegar área total de um objeto
Problemas com blender
Unity Não Reconhece Monitor Touchscreen
Como fazer meu personagem virar para os lados ?
Como remover apenas 1 árvore do terreno sem ter que remover as outras?
[TUTORIAL] Como criar partículas na Unity 5 (partículas de fogo, água, explosões, etc)
[ASSET] Musiquinha em loop violino e piano, para rpg talvez...
[TUTORIAL] Definir funções em botões UI por meio de scripts (Button.onClick)
Como resolver esse erro? Me impede de compilar o app...
Como ajustar o colisor de acordo com a posição da animação?
[iniciante] Como gerar 3 valores específicos aleatoriamente sem repetir?
Problema com o ThirdPersonController
Duplicar uma Cena
Mudar de cena na unity
Collider nâo funciona
Duvida sobre OnTriggerEnter
Comsegui terminar um jogo, Agradeço a todos
Hoje à(s) 12:17 am
Ontem à(s) 9:30 pm
Ontem à(s) 8:20 pm
Ontem à(s) 6:56 pm
Ontem à(s) 6:52 pm
Ontem à(s) 1:34 am
Dom Jul 05, 2020 9:13 pm
Dom Jul 05, 2020 7:17 pm
Dom Jul 05, 2020 7:15 pm
Dom Jul 05, 2020 6:51 pm
Dom Jul 05, 2020 2:56 pm
Dom Jul 05, 2020 2:20 pm
Dom Jul 05, 2020 2:05 pm
Dom Jul 05, 2020 1:43 pm
Dom Jul 05, 2020 11:50 am
Sab Jul 04, 2020 9:23 pm
Sab Jul 04, 2020 5:02 pm
Sab Jul 04, 2020 3:20 pm
Sab Jul 04, 2020 3:08 pm
Sab Jul 04, 2020 11:02 am
Sab Jul 04, 2020 2:31 am
Sab Jul 04, 2020 12:39 am
Sex Jul 03, 2020 1:14 pm
Sex Jul 03, 2020 12:34 pm
Qui Jul 02, 2020 5:28 pm
Qui Jul 02, 2020 5:06 pm
Qui Jul 02, 2020 3:06 pm
Qui Jul 02, 2020 2:57 pm
Qui Jul 02, 2020 2:07 pm
Qui Jul 02, 2020 1:59 pm
Qui Jul 02, 2020 1:25 pm
Qui Jul 02, 2020 11:32 am
Qui Jul 02, 2020 12:00 am
Qua Jul 01, 2020 6:31 pm
Qua Jul 01, 2020 6:04 pm
Qua Jul 01, 2020 6:00 pm
Qua Jul 01, 2020 3:19 pm
Qua Jul 01, 2020 1:18 pm
Qua Jul 01, 2020 8:59 am
Qua Jul 01, 2020 8:54 am
Qua Jul 01, 2020 8:51 am
Qua Jul 01, 2020 8:22 am
Ter Jun 30, 2020 2:22 pm
Ter Jun 30, 2020 11:25 am
Seg Jun 29, 2020 7:51 pm
Seg Jun 29, 2020 4:45 pm
Seg Jun 29, 2020 12:49 pm
Seg Jun 29, 2020 11:41 am
Seg Jun 29, 2020 9:53 am
Dom Jun 28, 2020 11:59 pm
Dom Jun 28, 2020 10:02 pm
Dom Jun 28, 2020 10:01 pm
Dom Jun 28, 2020 5:55 pm
Dom Jun 28, 2020 10:40 am
Dom Jun 28, 2020 9:16 am
Dom Jun 28, 2020 7:29 am
Sab Jun 27, 2020 2:53 pm
Sab Jun 27, 2020 8:08 am
Sex Jun 26, 2020 12:18 pm
Qui Jun 25, 2020 10:40 pm
Qui Jun 25, 2020 10:20 pm
Qui Jun 25, 2020 5:18 pm
Qui Jun 25, 2020 5:13 pm
Qui Jun 25, 2020 5:10 pm
Qui Jun 25, 2020 5:08 pm
Qui Jun 25, 2020 4:45 pm
Qui Jun 25, 2020 12:35 pm
Qui Jun 25, 2020 10:45 am
Qui Jun 25, 2020 7:21 am
Qui Jun 25, 2020 12:30 am
Qua Jun 24, 2020 8:02 pm
Qua Jun 24, 2020 6:58 pm
Qua Jun 24, 2020 6:37 pm
Qua Jun 24, 2020 3:23 pm
Qua Jun 24, 2020 11:41 am
Ter Jun 23, 2020 11:00 pm
Ter Jun 23, 2020 9:44 pm
Ter Jun 23, 2020 8:45 pm
Ter Jun 23, 2020 8:07 pm
Ter Jun 23, 2020 3:05 pm
Ter Jun 23, 2020 1:21 pm
Ter Jun 23, 2020 1:36 am
Seg Jun 22, 2020 10:53 pm
Seg Jun 22, 2020 9:36 pm
Seg Jun 22, 2020 5:32 pm
Seg Jun 22, 2020 11:40 am
Seg Jun 22, 2020 2:44 am
Seg Jun 22, 2020 2:22 am
Seg Jun 22, 2020 2:20 am
Seg Jun 22, 2020 2:18 am
Seg Jun 22, 2020 2:16 am
Seg Jun 22, 2020 2:15 am
Seg Jun 22, 2020 2:09 am
Seg Jun 22, 2020 2:09 am
Seg Jun 22, 2020 2:06 am
Seg Jun 22, 2020 1:59 am
Seg Jun 22, 2020 1:53 am
Seg Jun 22, 2020 1:47 am
Dom Jun 21, 2020 2:26 pm
Encracker
verme1311
KurotamaXIII
orph
iToddy
Fagner
dknoob537
JoelMJunior
BrunoMga07
Micco
M.Choice
Tiagotes
FerX95
ScorpionG4mer
jsiilva2k
Agoraaae3432
BrunoMga07
Tiagotes
Tiagotes
Micco
fabricadegame
SeTk
thales.ulisses
Micco
maxwellvale
Magnatah
Andrew lameira batista
kauannunes
Micco
CristhianSelbach
vini024
Callyde Jr
Hohenheim
hendrick22
adryansantoss
pekazao
Th2y
Micco
AmazingDeliciano
AmazingDeliciano
numb123
gtcmcsgo
FabioYuji
artplayer
Gabriel M
04vini
EliezerGomes
gabrimo
streamer
mama2401
Tiagotes
Albert Vinicius
iToddy
Micco
Ezequiel286
JoelMJunior
diegopds
thales.ulisses
AndreDeveloper
teos626
eduardoklausss
Chilinger
Chilinger
Chilinger
Chilinger
MarcosSchultz
Callyde Jr
bunijaclp
thales.ulisses
teos626
KurotamaXIII
AmazingDeliciano
poyser
KurotamaXIII
poyser
maxwellvale
Micco
vini024
MarcosSchultz
weuler
Callyde Jr
PedroLeite
poyser
Fagner
conceptfac
Matrirxp
Samuelostgamer
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
thales.ulisses

Inimigo andando de forma aleatória (SEM SER TELEPORTANDO) com sensor de collider por tag

Ir em baixo

DÚVIDA Inimigo andando de forma aleatória (SEM SER TELEPORTANDO) com sensor de collider por tag

Mensagem por gersoneson em Dom Mar 22, 2020 6:07 pm

Tem como fazer isso galera ? Estou perdido tentando fazer essa parada a um tempo e não consigo

gersoneson
Iniciante
Iniciante

PONTOS : 312
REPUTAÇÃO : 4
Respeito as regras : Inimigo andando de forma aleatória (SEM SER TELEPORTANDO) com sensor de collider por tag WvDYdlf

Voltar ao Topo Ir em baixo

DÚVIDA Re: Inimigo andando de forma aleatória (SEM SER TELEPORTANDO) com sensor de collider por tag

Mensagem por Fagner em Dom Mar 22, 2020 6:58 pm

Gera um Vector3 com valores aleatórios em X e Z respeitando os limites do seu mapa, coloca o valor de Y algo como 50;
Dispara um raycast com uns 100 metros pra baixo, partindo dessa posição;
Pega o hit.point, essa posição é o ponto onde o raio colidiu com o terreno ou cenário, e será o destino do Inimigo;
Passa a posição do hit.point como o destino do NavMeshAgent do inimigo;
Seu inimigo agora já deve andar para a posição aleatória, se a distancia entre o transform.position do inimigo e o hit.point for menor que um valor que você escolher, você reinicia o processo, escolhendo uma nova posição.
Fagner
Fagner
Moderador

Masculino PONTOS : 2093
REPUTAÇÃO : 361
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras : Inimigo andando de forma aleatória (SEM SER TELEPORTANDO) com sensor de collider por tag Aad8pUi

Voltar ao Topo Ir em baixo

DÚVIDA Re: Inimigo andando de forma aleatória (SEM SER TELEPORTANDO) com sensor de collider por tag

Mensagem por gersoneson em Dom Mar 22, 2020 7:09 pm

Obrigado!

gersoneson
Iniciante
Iniciante

PONTOS : 312
REPUTAÇÃO : 4
Respeito as regras : Inimigo andando de forma aleatória (SEM SER TELEPORTANDO) com sensor de collider por tag WvDYdlf

Voltar ao Topo Ir em baixo

DÚVIDA Re: Inimigo andando de forma aleatória (SEM SER TELEPORTANDO) com sensor de collider por tag

Mensagem por Fagner em Dom Mar 22, 2020 8:24 pm

No exemplo que dei, esqueci de uma coisa importante. É preciso checar se o local do Raycast é válido antes de mover o inimigo. Fiz um exemplo que leva isso em conta, você pode baixá-lo AQUI
Ele possui Gizmos pra exibir os limites de onde o Raycast será disparado, e se o destino não for válido ele continua a gerar posições até encontrar uma que o inimigo possa utilizar.
Inimigo andando de forma aleatória (SEM SER TELEPORTANDO) com sensor de collider por tag KIljDJu

O código ficou assim:
Código:
using UnityEngine;
using UnityEngine.AI;

public class SistemaRonda : MonoBehaviour
{
    public float larguraZona, comprimentoZona;
    private Vector3 limite1, limite2, limite3, limite4;
    private bool destinoAlcancado = true;
    private Vector3 posicaoDestino;
    public NavMeshAgent inimigo;

    private void Start()
    {
        DefinirLimites();
    }

    private void Update()
    {
        if(Vector3.Distance(inimigo.transform.position, posicaoDestino) < 1)
        {
            destinoAlcancado = true;
        }
        if (destinoAlcancado)
        {
            EscolherNovoDestino();
            destinoAlcancado = false;
            inimigo.SetDestination(posicaoDestino);
        }
    }

    private void EscolherNovoDestino()
    {
        Vector3 posicaoRaycast = new Vector3(Random.Range(-larguraZona/2, larguraZona/2), transform.position.y, Random.Range(-comprimentoZona / 2, comprimentoZona / 2));
        Ray ray = new Ray(posicaoRaycast, -Vector3.up);
        RaycastHit hit;
        if(Physics.Raycast(ray, out hit, 100))
        {
            if (hit.collider.tag == "Terreno")
                posicaoDestino = hit.point;
            else
                EscolherNovoDestino();
        }
        else
            EscolherNovoDestino();
    }

    private void DefinirLimites()
    {
        limite1 = transform.position + transform.forward * comprimentoZona / 2;
        limite2 = transform.position + transform.forward * comprimentoZona / 2;
        limite3 = transform.position - transform.forward * comprimentoZona / 2;
        limite4 = transform.position - transform.forward * comprimentoZona / 2;

        limite1 += transform.right * larguraZona / 2;
        limite2 -= transform.right * larguraZona / 2;
        limite3 += transform.right * larguraZona / 2;
        limite4 -= transform.right * larguraZona / 2;
    }

    private void OnDrawGizmos()
    {
        DefinirLimites();

        Gizmos.color = Color.green;
        Gizmos.DrawSphere(limite1, 0.1f);
        Gizmos.DrawSphere(limite2, 0.1f);
        Gizmos.DrawSphere(limite3, 0.1f);
        Gizmos.DrawSphere(limite4, 0.1f);

        Gizmos.color = Color.white;
        Gizmos.DrawLine(limite1, limite2);
        Gizmos.DrawLine(limite2, limite4);
        Gizmos.DrawLine(limite3, limite4);
        Gizmos.DrawLine(limite3, limite1);
    }
}

// Edição:

Caso não queira que o inimigo ande de costas se o destino for atrás dele, jogue esse trecho na Update():

Código:
if (inimigo.hasPath)
        {
            Vector3 dir = (inimigo.path.corners[1] - inimigo.transform.position).normalized;
            float dotInimigoP1 = Vector3.Dot(inimigo.transform.forward, dir);

            if (dotInimigoP1 < 0.5f)
            {
                inimigo.velocity = Vector3.zero;
            }
            else
            {
                inimigo.velocity = inimigo.desiredVelocity;
            }
        }
Fagner
Fagner
Moderador

Masculino PONTOS : 2093
REPUTAÇÃO : 361
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras : Inimigo andando de forma aleatória (SEM SER TELEPORTANDO) com sensor de collider por tag Aad8pUi

Voltar ao Topo Ir em baixo

DÚVIDA Re: Inimigo andando de forma aleatória (SEM SER TELEPORTANDO) com sensor de collider por tag

Mensagem por gersoneson em Qui Mar 26, 2020 11:22 pm

@Fagner escreveu:No exemplo que dei, esqueci de uma coisa importante. É preciso checar se o local do Raycast é válido antes de mover o inimigo. Fiz um exemplo que leva isso em conta, você pode baixá-lo AQUI
Ele possui Gizmos pra exibir os limites de onde o Raycast será disparado, e se o destino não for válido ele continua a gerar posições até encontrar uma que o inimigo possa utilizar.
Inimigo andando de forma aleatória (SEM SER TELEPORTANDO) com sensor de collider por tag KIljDJu

O código ficou assim:
Código:
using UnityEngine;
using UnityEngine.AI;

public class SistemaRonda : MonoBehaviour
{
    public float larguraZona, comprimentoZona;
    private Vector3 limite1, limite2, limite3, limite4;
    private bool destinoAlcancado = true;
    private Vector3 posicaoDestino;
    public NavMeshAgent inimigo;

    private void Start()
    {
        DefinirLimites();
    }

    private void Update()
    {
        if(Vector3.Distance(inimigo.transform.position, posicaoDestino) < 1)
        {
            destinoAlcancado = true;
        }
        if (destinoAlcancado)
        {
            EscolherNovoDestino();
            destinoAlcancado = false;
            inimigo.SetDestination(posicaoDestino);
        }
    }

    private void EscolherNovoDestino()
    {
        Vector3 posicaoRaycast = new Vector3(Random.Range(-larguraZona/2, larguraZona/2), transform.position.y, Random.Range(-comprimentoZona / 2, comprimentoZona / 2));
        Ray ray = new Ray(posicaoRaycast, -Vector3.up);
        RaycastHit hit;
        if(Physics.Raycast(ray, out hit, 100))
        {
            if (hit.collider.tag == "Terreno")
                posicaoDestino = hit.point;
            else
                EscolherNovoDestino();
        }
        else
            EscolherNovoDestino();
    }

    private void DefinirLimites()
    {
        limite1 = transform.position + transform.forward * comprimentoZona / 2;
        limite2 = transform.position + transform.forward * comprimentoZona / 2;
        limite3 = transform.position - transform.forward * comprimentoZona / 2;
        limite4 = transform.position - transform.forward * comprimentoZona / 2;

        limite1 += transform.right * larguraZona / 2;
        limite2 -= transform.right * larguraZona / 2;
        limite3 += transform.right * larguraZona / 2;
        limite4 -= transform.right * larguraZona / 2;
    }

    private void OnDrawGizmos()
    {
        DefinirLimites();

        Gizmos.color = Color.green;
        Gizmos.DrawSphere(limite1, 0.1f);
        Gizmos.DrawSphere(limite2, 0.1f);
        Gizmos.DrawSphere(limite3, 0.1f);
        Gizmos.DrawSphere(limite4, 0.1f);

        Gizmos.color = Color.white;
        Gizmos.DrawLine(limite1, limite2);
        Gizmos.DrawLine(limite2, limite4);
        Gizmos.DrawLine(limite3, limite4);
        Gizmos.DrawLine(limite3, limite1);
    }
}

// Edição:

Caso não queira que o inimigo ande de costas se o destino for atrás dele, jogue esse trecho na Update():

Código:
if (inimigo.hasPath)
        {
            Vector3 dir = (inimigo.path.corners[1] - inimigo.transform.position).normalized;
            float dotInimigoP1 = Vector3.Dot(inimigo.transform.forward, dir);

            if (dotInimigoP1 < 0.5f)
            {
                inimigo.velocity = Vector3.zero;
            }
            else
            {
                inimigo.velocity = inimigo.desiredVelocity;
            }
        }
Valeu!

gersoneson
Iniciante
Iniciante

PONTOS : 312
REPUTAÇÃO : 4
Respeito as regras : Inimigo andando de forma aleatória (SEM SER TELEPORTANDO) com sensor de collider por tag WvDYdlf

Voltar ao Topo Ir em baixo

Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum