[RESOLVIDO] Problema com script de ataque, funcionando em partes
3 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Problema com script de ataque, funcionando em partes
Tipo, meu cérebro está me dizendo que está tudo certo, mas o unity continua dizendo que está faltando algo. Simplesmente não executo as animações do slot2 e do slot3 nem sequer da o log em que parte do corpo do alvo eu acertei. Já no slot 1 funciona normalmente, animação perfeito, debug de hitbox tudo certo.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Melee : MonoBehaviour {
public Collider [] HitboxDeAtaque;
private float danoDaArmaAtual;
Animator anim;
public static bool podeAtacar;
void Start () {
anim = GetComponent<Animator> ();
podeAtacar = true;
}
private void Update () {
if (Input.GetKeyDown (KeyCode.Mouse0) && TrocaDeArmas.Slot1 == true && podeAtacar == true)
{
anim.SetBool ("Atacar1", true);
StartCoroutine("TempodeAtaque");
podeAtacar = false;
if (Input.GetKeyDown (KeyCode.Mouse0) && TrocaDeArmas.Slot2 == true && podeAtacar == true)
{
anim.SetBool ("Atacar1", true);
StartCoroutine("TempodeAtaque");
podeAtacar = false;
}
if (Input.GetKeyDown (KeyCode.Mouse0) && TrocaDeArmas.Slot3 == true && podeAtacar == true)
{
anim.SetBool ("Atacar2", true);
StartCoroutine("TempodeAtaque");
podeAtacar = false;
}
}
}
private void Atacar (Collider col){
Collider[] cols = Physics.OverlapBox (col.bounds.center, col.bounds.extents, col.transform.rotation, LayerMask.GetMask ("HitBox"));
foreach (Collider c in cols)
{
if (c.transform.root == transform)
continue;
Debug.Log (c.name);
}
}
IEnumerator TempodeAtaque(){
yield return new WaitForSeconds (1.2f);
Atacar (HitboxDeAtaque [0]);
podeAtacar = true;
anim.SetBool ("Atacar1", false);
anim.SetBool ("Atacar2", false);
anim.SetBool ("Iddle", true);
}
}
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TrocaDeArmas : MonoBehaviour {
public int ArmaSelecionada=0;
public static bool Slot1;
public static bool Slot2;
public static bool Slot3;
void Start () {
SelecionarArma ();
}
void Update () {
int previousSelectedWeapon = ArmaSelecionada;
if (Input.GetAxis ("Mouse ScrollWheel") < 0f && Melee.podeAtacar == true)
{
if (ArmaSelecionada >= transform.childCount - 1)
ArmaSelecionada = 0;
else
ArmaSelecionada++;
}
if (Input.GetAxis ("Mouse ScrollWheel") > 0f && Melee.podeAtacar == true)
{
if (ArmaSelecionada <= 0)
ArmaSelecionada = transform.childCount-1;
else
ArmaSelecionada--;
}
if (Input.GetKeyDown (KeyCode.Alpha1) && Melee.podeAtacar == true)
{
ArmaSelecionada = 0;
}
if (Input.GetKeyDown (KeyCode.Alpha2)&& transform.childCount >=2 && Melee.podeAtacar == true)
{
ArmaSelecionada = 1;
}
if (Input.GetKeyDown (KeyCode.Alpha3)&& transform.childCount >=3 && Melee.podeAtacar == true)
{
ArmaSelecionada = 2;
}
/*if (Input.GetKeyDown (KeyCode.Alpha4)&& transform.childCount >=4)
{
ArmaSelecionada = 3;
}*/
if (previousSelectedWeapon != ArmaSelecionada)
{
SelecionarArma ();
}
if (ArmaSelecionada == 0)
{
Slot1 = true;
Slot2 = false;
Slot3 = false;
}
if (ArmaSelecionada == 1)
{
Slot1 = false;
Slot2 = true;
Slot3 = false;
}
if (ArmaSelecionada == 2)
{
Slot1 = false;
Slot2 = false;
Slot3 = true;
}
}
void SelecionarArma ()
{
int i = 0;
foreach (Transform weapon in transform)
{
if (i == ArmaSelecionada)
weapon.gameObject.SetActive (true);
else
weapon.gameObject.SetActive(false);
i++;
}
}
}
Última edição por dstaroski em Qui Fev 15, 2018 1:28 pm, editado 2 vez(es) (Motivo da edição : Resolvido)
Fluttershy28- Avançado
- PONTOS : 2751
REPUTAÇÃO : 52
Idade : 27
Áreas de atuação : Modelagem, Animação, Texturização, Design
Respeito as regras :
Re: [RESOLVIDO] Problema com script de ataque, funcionando em partes
Coloque títulos mais expressivos para os seus tópicos, para facilitar o acesso daqueles que tem uma possível ajuda para o problema, e daqueles que passam pelo mesmo problema;
Recomendo ver esse tutorial para pegar como base para os seus scripts:
https://www.schultzgames.com/t2141-tutorial-sistema-de-tiro-com-raycast-varias-armas-mira-laser-municao-dano-etc-etc?highlight=varias+armas+++lazer
Recomendo ver esse tutorial para pegar como base para os seus scripts:
https://www.schultzgames.com/t2141-tutorial-sistema-de-tiro-com-raycast-varias-armas-mira-laser-municao-dano-etc-etc?highlight=varias+armas+++lazer
Phph09- Profissional
- PONTOS : 3788
REPUTAÇÃO : 240
Idade : 19
Respeito as regras :
Re: [RESOLVIDO] Problema com script de ataque, funcionando em partes
seu título será alterado devido estar fora dos padrões de um fórum, conforme o amigo acima citou. Dê uma olhada no link postado por ele.Fluttershy28 escreveu:Tipo, meu cérebro está me dizendo que está tudo certo, mas o unity continua dizendo que está faltando algo. Simplesmente não executo as animações do slot2 e do slot3 nem sequer da o log em que parte do corpo do alvo eu acertei. Já no slot 1 funciona normalmente, animação perfeito, debug de hitbox tudo certo.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Melee : MonoBehaviour {
public Collider [] HitboxDeAtaque;
private float danoDaArmaAtual;
Animator anim;
public static bool podeAtacar;
void Start () {
anim = GetComponent<Animator> ();
podeAtacar = true;
}
private void Update () {
if (Input.GetKeyDown (KeyCode.Mouse0) && TrocaDeArmas.Slot1 == true && podeAtacar == true)
{
anim.SetBool ("Atacar1", true);
StartCoroutine("TempodeAtaque");
podeAtacar = false;
if (Input.GetKeyDown (KeyCode.Mouse0) && TrocaDeArmas.Slot2 == true && podeAtacar == true)
{
anim.SetBool ("Atacar1", true);
StartCoroutine("TempodeAtaque");
podeAtacar = false;
}
if (Input.GetKeyDown (KeyCode.Mouse0) && TrocaDeArmas.Slot3 == true && podeAtacar == true)
{
anim.SetBool ("Atacar2", true);
StartCoroutine("TempodeAtaque");
podeAtacar = false;
}
}
}
private void Atacar (Collider col){
Collider[] cols = Physics.OverlapBox (col.bounds.center, col.bounds.extents, col.transform.rotation, LayerMask.GetMask ("HitBox"));
foreach (Collider c in cols)
{
if (c.transform.root == transform)
continue;
Debug.Log (c.name);
}
}
IEnumerator TempodeAtaque(){
yield return new WaitForSeconds (1.2f);
Atacar (HitboxDeAtaque [0]);
podeAtacar = true;
anim.SetBool ("Atacar1", false);
anim.SetBool ("Atacar2", false);
anim.SetBool ("Iddle", true);
}
}Eu sei que o problema deve ser no meu cérebro, mas eu não consegui achar o erro, alguma alma santa me ajude plz
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TrocaDeArmas : MonoBehaviour {
public int ArmaSelecionada=0;
public static bool Slot1;
public static bool Slot2;
public static bool Slot3;
void Start () {
SelecionarArma ();
}
void Update () {
int previousSelectedWeapon = ArmaSelecionada;
if (Input.GetAxis ("Mouse ScrollWheel") < 0f && Melee.podeAtacar == true)
{
if (ArmaSelecionada >= transform.childCount - 1)
ArmaSelecionada = 0;
else
ArmaSelecionada++;
}
if (Input.GetAxis ("Mouse ScrollWheel") > 0f && Melee.podeAtacar == true)
{
if (ArmaSelecionada <= 0)
ArmaSelecionada = transform.childCount-1;
else
ArmaSelecionada--;
}
if (Input.GetKeyDown (KeyCode.Alpha1) && Melee.podeAtacar == true)
{
ArmaSelecionada = 0;
}
if (Input.GetKeyDown (KeyCode.Alpha2)&& transform.childCount >=2 && Melee.podeAtacar == true)
{
ArmaSelecionada = 1;
}
if (Input.GetKeyDown (KeyCode.Alpha3)&& transform.childCount >=3 && Melee.podeAtacar == true)
{
ArmaSelecionada = 2;
}
/*if (Input.GetKeyDown (KeyCode.Alpha4)&& transform.childCount >=4)
{
ArmaSelecionada = 3;
}*/
if (previousSelectedWeapon != ArmaSelecionada)
{
SelecionarArma ();
}
if (ArmaSelecionada == 0)
{
Slot1 = true;
Slot2 = false;
Slot3 = false;
}
if (ArmaSelecionada == 1)
{
Slot1 = false;
Slot2 = true;
Slot3 = false;
}
if (ArmaSelecionada == 2)
{
Slot1 = false;
Slot2 = false;
Slot3 = true;
}
}
void SelecionarArma ()
{
int i = 0;
foreach (Transform weapon in transform)
{
if (i == ArmaSelecionada)
weapon.gameObject.SetActive (true);
else
weapon.gameObject.SetActive(false);
i++;
}
}
}
Abraço!
Re: [RESOLVIDO] Problema com script de ataque, funcionando em partes
Blz MyBad, Meu script já está funcionado, apenas o slot 1. o script do vídeo esta trabalhando com raycast eu quero usar os hitboxes assim porque meu inimigo ja usa o raycast para me perseguir, eu setei as hitboxes do corpo dele como Ignore Raycast, justamente para ele não ficar cego quando executar as animações. se eu usar o raycast, tanto ela vai ficar cego, quanto eu vou ter que trocar os parâmetros da layer que os hitboxes estão usando. Por isso eu queria que alguém desse uma olhada no meu script e me dizer porque o slot 2 e 3 não funcionam, sendo que usam os mesmos parâmetros do slot 1.Phph09 escreveu:Coloque títulos mais expressivos para os seus tópicos, para facilitar o acesso daqueles que tem uma possível ajuda para o problema, e daqueles que passam pelo mesmo problema;
Recomendo ver esse tutorial para pegar como base para os seus scripts:
https://www.schultzgames.com/t2141-tutorial-sistema-de-tiro-com-raycast-varias-armas-mira-laser-municao-dano-etc-etc?highlight=varias+armas+++lazer
Fluttershy28- Avançado
- PONTOS : 2751
REPUTAÇÃO : 52
Idade : 27
Áreas de atuação : Modelagem, Animação, Texturização, Design
Respeito as regras :
Re: [RESOLVIDO] Problema com script de ataque, funcionando em partes
Resolvi, quero dizer, eu apenas troquei a ordem das condições da função update e todos ficaram funcionando, foi um tiro no escuro que acertou o alvo. se alguém souber o que houve e poder me explicar agraço, pois não gostaria de fazer o mesmo erro no futuro
Fluttershy28- Avançado
- PONTOS : 2751
REPUTAÇÃO : 52
Idade : 27
Áreas de atuação : Modelagem, Animação, Texturização, Design
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] OnTriggerEnter e OnTriggerExit parecem não funcionar script ataque inimigo
» [Resolvido]Problema nesse pequeno script
» [RESOLVIDO] Problema em um script
» [RESOLVIDO] Problema com um Script
» [RESOLVIDO] Problema com script
» [Resolvido]Problema nesse pequeno script
» [RESOLVIDO] Problema em um script
» [RESOLVIDO] Problema com um Script
» [RESOLVIDO] Problema com script
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos