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:
[TUTORIAL] Criar Analógico Virtual UI Para Mobile.
[____TÓPICO LIVRE____] FALE O QUE QUISER (Parte 2)
(Duvida) Sobre Banco de dados MMORPG
Ola sou programador e preciso da sua ajuda!!
[TUTORIAL] Camera que segue o Player para jogos 2D e 2.5D
Jogador Flicando no chão
[RESOLVIDO] alguem pode ajudar com inimigo
O nome não existe no contexto atual
Pegar items
[RESOLVIDO] Erro Build il2cpp
Meu game para Android " As aventuras de Steff " finalizado, ou quase!
[Duvida] Sobre Namespace
Pular e atirar
[Projeto] Omega Racers
Como instanciar APENAS um objeto ?
Procuro interessados para entrar no grupo "Goodbye Reality Studio"!
[Duvida] Acesso a Classes no C#
duvida player quicando ao descer desnivel
[RESOLVIDO] Animação de abrir/fechar porta mais complexa
Duvida Tamanho do Mapa unity
Procura-se equipe para jogo de puzzle em 3º Pessoa
Duvida com API Vulkan Vs OpenGL -- Unity !!!!
duvida sobre essa Ui e raycast
[TUTORIAL] Colocando Dark Theme Na Sua Unity [Qualquer Versão]
A unity não abre o projeto!!
Nitro para Carro
Firebase (Login com facebook)
Ajuda jogo
cliente/servidor
[Formação de Equipe] - City Driving
Graficos bugados no android Unity 5
[ASSET] Script Arma Completo Incluso Recuo. Incluso outros Scripts
Clicar em um Sprite e realizar uma ação
[TUTORIAL] FPSController nadar e mergulhar, junto com efeito submerso
Ajuda com Colisões
mudar objeto ao clicar nele
Ajuda com um script(SmoothCamera)
Duvida em Desenhar UI -- HELP
Finalização Calculadora, fazer com que o jogador tente novamente
Como colocar musicas em um app?
[Duvida] Sobre Reference Resolution -> (Canvas)
Como criar navegador próprio em app?
[RESOLVIDO] Duvida sobre Edição de texto em imagem
Da pra criar Apps na Unity?
BUG MT CHATO. USANDO O PlayerPrefs. ME AJUDAAAAAAA PF
[RESOLVIDO] Camera não colide com parede
Há algum segredo em criações de I.A?
[RESOLVIDO] salvar as configurações para aparecer no game certo que o jogador configurou
Dica de estudos
[RESOLVIDO] Duvida Sobre C#
Script parando de funcionar quando maximizo a tela do game
Fazer uma seleção de personagens e seguir para o jogo com o personagem escolhido
Como faço para colocar unity em rede
personagem
Criar animações
Detectar movimento Joystick
tem como abrir arquivos de jogos já compilado?
Como criar rede neural para AI
[____ADMINISTRAÇÃO____] Alterações IMPORTANTES no fórum.
Navegador reiniciando no mobile dos IOS [WEBGL]
[RESOLVIDO] Dúvida Script OnTriggerEnter
Gerar APK
[TUTORIAL] Salvar dados com playerprefs facilmente.
É possível reproduzir som durante logo de abertura do jogo?
[TUTORIAL] Criação de Skins Realistas em 3D!
Command 888
Sistema de Yu-Gi-Oh - C O M P L E T O - Download 13/08
[RESOLVIDO] Como fazer uma calculadora recebendo o resultado do jogador? UNITY
Construção de um save das configurações e ir pro jogo com as config certas
Podem me ajudar com esse problema
Contagem de tempo em classes abstratas
[TUTORIAL] Controle 3ª pessoa com animações mecânicas (root motion)
[RESOLVIDO] Como mostrar o valor atual de uma variável do tipo Int em um text
Como se faz um dash?
Como permitir que o usuário escolha uma imagem para ser usada em um jogo?
[Projeto em Andamento] Favela Combat - Multiplayer online (Android & iOS)
[TUTORIAL] Sistema Pdv, Mercado, Padaria, Conveniência, Lojas Em Geral - C# VISUAL STUDIO
Diferenciar execução (mobile / desktop) WEBGL
Como mudar de camera assim que o player entrar no Trigger
WEBGL
Como faço para mover um objeto?
[TUTORIAL] Unity 5 - Sistema Completo de PORTAS E CHAVES
Ajuda em bug da Unity!
como mudar o material de um mesh que tem mas de 1 material por Script ?
[Duvida] Como funciona a coleta de dados e como é feito?
Teclado na Unity
Formação de equipe -- ASSALTO A BANCO--
Câmera estar limitada ao tamanho da tela
ESCOLA DE DESENVOLVIMENTO DE GAMES.
Mudar uma animação já existente com o clique em um botão UI
Cam
[RESOLVIDO] Minha imagem só aparece na scene
COMO EXPORTAR PARA IOS COM WINDOWS
Criei uma Grama com Shader Graph
[TUTORIAL] Mover personagem com Touch, no estilo SUBWAY SURFERS
Joystick
Limite Máximo de tamanho de mapa na Unity?
Jogo Mobile (Leia)
Entender um script
Hoje à(s) 10:42 am
Hoje à(s) 2:38 am
Hoje à(s) 1:53 am
Hoje à(s) 1:36 am
Ontem à(s) 9:28 pm
Ontem à(s) 9:18 pm
Ontem à(s) 1:48 pm
Ontem à(s) 11:35 am
Ontem à(s) 2:04 am
Qua Ago 21, 2019 11:48 pm
Qua Ago 21, 2019 10:10 pm
Qua Ago 21, 2019 7:58 pm
Qua Ago 21, 2019 6:23 pm
Qua Ago 21, 2019 1:53 pm
Qua Ago 21, 2019 2:04 am
Ter Ago 20, 2019 9:26 pm
Ter Ago 20, 2019 8:36 pm
Ter Ago 20, 2019 7:46 pm
Ter Ago 20, 2019 2:45 pm
Ter Ago 20, 2019 9:39 am
Ter Ago 20, 2019 5:55 am
Ter Ago 20, 2019 2:35 am
Ter Ago 20, 2019 1:46 am
Ter Ago 20, 2019 1:08 am
Seg Ago 19, 2019 11:52 pm
Seg Ago 19, 2019 6:32 pm
Seg Ago 19, 2019 6:22 pm
Seg Ago 19, 2019 2:25 pm
Seg Ago 19, 2019 11:47 am
Dom Ago 18, 2019 9:40 pm
Dom Ago 18, 2019 7:08 pm
Dom Ago 18, 2019 5:33 pm
Dom Ago 18, 2019 3:16 pm
Sab Ago 17, 2019 11:23 pm
Sab Ago 17, 2019 3:16 am
Sex Ago 16, 2019 11:27 pm
Sex Ago 16, 2019 8:50 pm
Sex Ago 16, 2019 12:19 pm
Sex Ago 16, 2019 12:07 pm
Sex Ago 16, 2019 10:58 am
Sex Ago 16, 2019 6:33 am
Qui Ago 15, 2019 6:42 pm
Qui Ago 15, 2019 4:02 pm
Qui Ago 15, 2019 12:10 pm
Qui Ago 15, 2019 11:57 am
Qua Ago 14, 2019 7:13 pm
Qua Ago 14, 2019 6:07 pm
Qua Ago 14, 2019 5:48 pm
Qua Ago 14, 2019 5:18 pm
Qua Ago 14, 2019 5:05 pm
Qua Ago 14, 2019 5:00 pm
Qua Ago 14, 2019 4:56 pm
Qua Ago 14, 2019 4:53 pm
Qua Ago 14, 2019 4:52 pm
Qua Ago 14, 2019 4:49 pm
Qua Ago 14, 2019 4:47 pm
Qua Ago 14, 2019 4:45 pm
Qua Ago 14, 2019 4:44 pm
Qua Ago 14, 2019 4:32 pm
Qua Ago 14, 2019 4:31 pm
Qua Ago 14, 2019 4:10 pm
Qua Ago 14, 2019 12:39 am
Ter Ago 13, 2019 10:23 pm
Ter Ago 13, 2019 10:03 pm
Ter Ago 13, 2019 7:53 pm
Ter Ago 13, 2019 6:33 pm
Ter Ago 13, 2019 4:26 pm
Ter Ago 13, 2019 4:10 pm
Seg Ago 12, 2019 11:25 pm
Seg Ago 12, 2019 8:31 pm
Seg Ago 12, 2019 6:17 pm
Seg Ago 12, 2019 12:51 pm
Dom Ago 11, 2019 7:54 pm
Dom Ago 11, 2019 10:17 am
Sab Ago 10, 2019 10:32 pm
Sab Ago 10, 2019 2:34 pm
Sex Ago 09, 2019 10:43 pm
Sex Ago 09, 2019 5:56 pm
Qui Ago 08, 2019 7:48 pm
Qui Ago 08, 2019 5:21 pm
Qui Ago 08, 2019 12:32 pm
Qui Ago 08, 2019 2:53 am
Qua Ago 07, 2019 10:57 pm
Qua Ago 07, 2019 8:10 pm
Qua Ago 07, 2019 7:16 pm
Qua Ago 07, 2019 4:29 pm
Qua Ago 07, 2019 2:51 pm
Seg Ago 05, 2019 11:24 pm
Seg Ago 05, 2019 9:51 pm
Seg Ago 05, 2019 8:48 pm
Seg Ago 05, 2019 8:33 pm
Seg Ago 05, 2019 7:36 pm
Seg Ago 05, 2019 6:23 pm
Seg Ago 05, 2019 5:31 pm
Seg Ago 05, 2019 5:27 pm
Seg Ago 05, 2019 2:35 am
Seg Ago 05, 2019 2:27 am
Dom Ago 04, 2019 7:37 pm
Dom Ago 04, 2019 4:25 pm
Daniel Henrique
MarcosSchultz
kleber3254
Guaru
MarcosSchultz
MarcosSchultz
diegopds
diegopds
rafaelllsd
numb123
SergioDB
nibirou
MarcosSchultz
guimaraf
ruanzikaad
PedroSilva
Matrirxp
MarcosSchultz
ovoPentelho
billybmx
artplayer
MarcosSchultz
MarcosSchultz
nibirou
MarcosSchultz
HeroSword
Zack2
richerd
Valakinhas
artplayer
MarcosSchultz
Jhonyzin
MayLeone
Callyde Jr
MarcosSchultz
MayLeone
rafaelllsd
SteveRogers
lucaspoiob
Daniel Dória
nibirou
Daniel Dória
nibirou
Daniel Dória
daniel123163
SergioDB
Projeto Residentes Evil
lucaspoiob
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
Dionilson
guimaraf
rafaelllsd
artplayer
Diguinho
Callyde Jr
MayLeone
lucaspoiob
Unidade3d5
MayLeone
MayLeone
dstaroski
RodriGO3477
SteveRogers
artplayer
dkrazor
Chilinger
numb123
Matrirxp
MarcosSchultz
Lonx SpellArtsStudio
MarcosSchultz
SteveRogers
ffabim
poyser
artplayer
artplayer
joffersoju
rafaelllsd
RodriGO3477
MarcosSchultz
Hamassfall
gtcmcsgo
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
iToddy
MayLeone

Detectando Colisão da Arma com o Inimigo

Ir em baixo

DÚVIDA Detectando Colisão da Arma com o Inimigo

Mensagem por marlok3d em Seg Jun 10, 2019 7:30 am

Bom dia! 

Estou com um problema no meu jogo 2D.

Tenho um objeto pai que é o personagem jogável, este objeto possui os seus filhos que são as armas (que possuem seus próprios colisores e que são ativados somente quando é executada uma animação de ataque). Estou com dois problemas que não consigo resolver.

1. Ao atacar, o colisor da arma está colidindo com objetos que somente o personagem deveria colidir, mesmo eu configurando as armas para colidir somente com a tag "inimigos". Por exemplo, se tem um item coletável na cena, e eu der uma espadada nele, ele será coletado. Eu gostaria que o item fosse coletado somente quando entrar em colisão direta com o personagem. Obs. O Script do personagem está usando a função OnTriggerEnter2D para detectar a colisão com a tag "coletaveis".

2. Se o ataque com as armas acertam os inimigos, o personagem também recebe dano. Obs. O script do inimigo está usando a função OntriggerEnter2D para detectar a colisão com a tag "arma" e somente as armas estão configuradas com esta tag.

Obrigado!

marlok3d
Iniciante
Iniciante

PONTOS : 285
REPUTAÇÃO : 0
Respeito as regras : Detectando Colisão da Arma com o Inimigo WvDYdlf

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: Detectando Colisão da Arma com o Inimigo

Mensagem por yurinogueira em Seg Jun 10, 2019 7:45 am

Poderia mostrar o script?

yurinogueira
Avançado
Avançado

PONTOS : 579
REPUTAÇÃO : 11
Respeito as regras : Detectando Colisão da Arma com o Inimigo WvDYdlf

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: Detectando Colisão da Arma com o Inimigo

Mensagem por marlok3d em Ter Jun 11, 2019 8:13 am

Código:
//Script do Player
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class playerScript : MonoBehaviour
{
    public bool getHit = false;
    private _GameController _GameController;
    private Animator playerAnimator;
    private Rigidbody2D playerRb;
    private SpriteRenderer sRender;

    [Header("Mecanica do Personagem")]
    public int vidaAtual;
    public int vidaPersonagem;
    public Transform groundCheck; //objeto responsável por detectar se o personagem está sobre uma superfície
    public LayerMask whatIsGround;//indica o que é superfície para o teste do grounded 
    public float startSpeed; //velocidade inicial do personagem
    public float speed; //velocidade de movimento do personagem
    public float jumpForce; //Força aplicada para o pulo do personagem
    public bool jumping; //verifica se o personagem está pulando     
    public bool grounded; //indica se o personagem está pisando em alguma superfície
    public bool attacking; // indica se o personagem está atacando   
    public bool lookLeft;  //indica se o personagem está virado para esquerda
    public int idAnimation; //indica o ID da animação   
    private float h, v; //variaveis de movimento horizontal e vertical
    public Collider2D standing, crounching; //colisor em pé e colisor agaixado   
    public Transform hand;
    private Vector3 dir = Vector3.right; //cria uma variavel "direção" e indica que o valor inicial dela é "direita"
     
    //Sistema de Ataque
    public GameObject[] armas;

    // Start is called before the first frame update
    void Start()
    {
        vidaAtual = vidaPersonagem;
        speed = startSpeed;
        _GameController = FindObjectOfType(typeof(_GameController)) as _GameController;
        playerAnimator = GetComponent<Animator>(); // a variavel playerAnimator recebe o componente Animator
        playerRb = GetComponent<Rigidbody2D>(); // a variavel playerRb recebe o componente Rigidbody2D
        sRender = GetComponent<SpriteRenderer>();
        foreach (GameObject o in armas)
        {
            o.SetActive(false); //desabilita os colisores das armas ao iniciar o jogo
        }
   
    }

    public void FixedUpdate()
    {
        grounded = Physics2D.OverlapCircle(groundCheck.position, 0.02f, whatIsGround); //cria um circulo para detectar colisão com a layer whatisGround
        playerRb.velocity = new Vector2(h * speed, playerRb.velocity.y);
    }

    // Update is called once per frame
    void Update()
    {
        h = Input.GetAxisRaw("Horizontal"); // Esquerda e Direita
        v = Input.GetAxisRaw("Vertical"); //Cima e Baixo

        jumping = !grounded;

        //Controle do Personagem
        if (h > 0 && lookLeft == true && attacking == false) //se apertar para direita e o personagem estiver olhando para esquerda inverte a posição
        {
            flip();
        }
        else if (h < 0 && lookLeft == false && attacking == false) //se apertar para esquerda e o personagem estiver olhando para direita inverte a posição
        {
            flip();
        }
        if (v < 0) //se estiver apertando para baixo aplica a animação de agaichado
        {
            idAnimation = 2;
            if (grounded == true) //se estiver abaixo e pisando no chão ele não pode se mover na horizontal
            {
                h = 0;
            }
        }
        else if (h != 0) //se estiver apertando para esquerda ou direita aplica a animação de andando
        {
            idAnimation = 1;
        }
        //se estiver parado aplica a animação de Idle
        else
        { 
            idAnimation = 0;
        }   
   
        if (Input.GetButtonDown("Fire1") && attacking == false)
        {
            playerAnimator.SetTrigger("atack");
        }       
       
        //se o personagem estiver atacando, ele não pode se movimentar
        if (attacking == true)
        {
            h = 0;
        }     
        if (getHit == true) //se estiver apanhando
        {
            h = 0;
        }

        //Pulo
        if (Input.GetButtonDown("Jump") && grounded == true && attacking == false)
        {
            playerRb.velocity = Vector2.up * jumpForce;
        }     
     
        //Ativando Animações
        playerAnimator.SetBool("grounded", grounded); //Utiliza a vartiavel Grounded para armazenar um valor na variavel do animator "grounded"
        playerAnimator.SetInteger("idAnimation", idAnimation);
        playerAnimator.SetFloat("speedY", playerRb.velocity.y); 
    }

    void atack(int atk)
    {
        switch (atk)
        {
            case 0:
                attacking = false;
                armas[2].SetActive(false); //desabilita o collider da arma ao terminar o atack
                break;

            case 1:
                attacking = true;
                break;
        }
    }
     
    void flip()
    {
        lookLeft = !lookLeft; //inverte o valor da variavel lookLeft
        float x = transform.localScale.x;
        x *= -1; //inverte o sinal do escale x (- +)
        transform.localScale = new Vector3(x, transform.localScale.y, transform.localScale.z);

        dir.x = x; // muda a direção do raycast usado na função interagir() da esquerda para direita ou vice versa   
    }
 
    //FUNÇÕES PARA TRATAR TRIGGERS

    private void OnTriggerEnter2D(Collider2D col) // executada uma vez ao entrar em colisão
    {
        switch (col.gameObject.tag)
        {
            case "Coletaveis":

                col.gameObject.SendMessage("coletar", SendMessageOptions.DontRequireReceiver); http://SendMessageOptions.DontRequireReceiver evita erros caso o objeto não tenha a função

                break;

            case "inimigo":
                if (getHit == false)
                {
                    getHit = true;
                    vidaAtual = -1;
                    playerAnimator.SetTrigger("hit");//chama a aninação de hit                 
                }
                break;
        }
       

    }

    private void OnTriggerEstay2D(Collider2D col)
    {
        switch (col.gameObject.tag)
        {
            case "Coletaveis":

                col.gameObject.SendMessage("coletar", SendMessageOptions.DontRequireReceiver); http://SendMessageOptions.DontRequireReceiver evita erros caso o objeto não tenha a função

                break;

            case "inimigo":
                if (getHit == false)
                {
                    getHit = true;
                    vidaAtual = -1;
                    playerAnimator.SetTrigger("hit");//chama a aninação de hit                 
                }
                break;
        }   
    }

    private void OnTriggerExit2D(Collider2D col) // executada uma vez ao sair da colisão
    {
   
    }

    void controleArma(int id)
    {
        foreach (GameObject o in armas)
        {
            o.SetActive(false); //desabilita os colisores das armas
        }

        armas[id].SetActive(true); //ativa somente o collider correspondente ao frame atual
    }
}

Código:
//Script do Inimigo
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class controleInimigo : MonoBehaviour

    private Animator animator;

    [Header("Configuração de Vida")]
    public int vidaInimigo;
    public int vidaAtual;

    [Header("Configuração da IA")]   
    public bool died;
    private bool getHit;
    public float tempoDeInvulnerabilidade;

    // Start is called before the first frame update
    void Start()
    {
        animator = GetComponent<Animator>();
        vidaAtual = vidaInimigo;
    }

    // Update is called once per frame
    private void Update()
    {
        if (vidaAtual <= 0)
        {
            died = true;
            Destroy(this.gameObject, 2);
        }
    }

    private void OnTriggerEnter2D(Collider2D col)
    {
        switch (col.gameObject.tag)
        {
            case "arma":
                if (getHit == false)
                {
                    getHit = true;
                    vidaAtual = vidaAtual - 1;
                    animator.SetTrigger("hit");//chama a aninação de hit 
                    StartCoroutine("invulneravel");
                }
            break;
        }

    }
    IEnumerator invulneravel()
    {
        yield return new WaitForSeconds(tempoDeInvulnerabilidade);
        getHit = false;
    }
}


marlok3d
Iniciante
Iniciante

PONTOS : 285
REPUTAÇÃO : 0
Respeito as regras : Detectando Colisão da Arma com o Inimigo WvDYdlf

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: Detectando Colisão da Arma com o Inimigo

Mensagem por MarcosSchultz em Qua Jun 19, 2019 3:35 pm

Talvez uma saída seja detectar colisão por meio de Raycast, e utilizar layerMask para decidir quais objetos colidem com o quê.
MarcosSchultz
MarcosSchultz
Administrador

Masculino PONTOS : 62244
REPUTAÇÃO : 2343
Idade : 23
Áreas de atuação : Administrador do fórum
Respeito as regras : Detectando Colisão da Arma com o Inimigo Aad8pUi

Ver perfil do usuário http://www.schultzgames.com

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