ESTOU COM UM PROBLEMA EM UM SCRIPT
4 participantes
Página 1 de 1
ESTOU COM UM PROBLEMA EM UM SCRIPT
Estou com um problema deum script de animação, o problema é que eu queria que com apenas um clique no mause executasse a animação com o mesmo numeros de cliques, mas quando dou apenas um clique começa a fazer a ação farias vezes e eu queria saber se o problema esta no script.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class animacao2 : MonoBehaviour
{
public static bool attacking;
public float attackTime = 0.5f;
private float attackCounter;
public Animator playerAnimator;
public GameObject weapon;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (!attacking) {
weapon.GetComponent <BoxCollider> ().enabled = false;
if (Input.GetKeyDown (KeyCode.Mouse0)) {
attackCounter = attackTime;
attacking = true;
weapon.GetComponent<BoxCollider> ().enabled = true;
playerAnimator.SetBool ("Soco Esquerdo", true);
}
}
if (attackCounter> 0) {
attackCounter -= Time.deltaTime;
}
if (attackCounter <= 0) {
attacking = false;
playerAnimator.SetBool ("Soco Esquerdo", false);
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class animacao2 : MonoBehaviour
{
public static bool attacking;
public float attackTime = 0.5f;
private float attackCounter;
public Animator playerAnimator;
public GameObject weapon;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (!attacking) {
weapon.GetComponent <BoxCollider> ().enabled = false;
if (Input.GetKeyDown (KeyCode.Mouse0)) {
attackCounter = attackTime;
attacking = true;
weapon.GetComponent<BoxCollider> ().enabled = true;
playerAnimator.SetBool ("Soco Esquerdo", true);
}
}
if (attackCounter> 0) {
attackCounter -= Time.deltaTime;
}
if (attackCounter <= 0) {
attacking = false;
playerAnimator.SetBool ("Soco Esquerdo", false);
}
}
}
gutovic29- Iniciante
- PONTOS : 2103
REPUTAÇÃO : 1
Respeito as regras :
Re: ESTOU COM UM PROBLEMA EM UM SCRIPT
- Código:
[size=14][/size]
gutovic29 escreveu:Estou com um problema deum script de animação, o problema é que eu queria que com apenas um clique no mause executasse a animação com o mesmo numeros de cliques, mas quando dou apenas um clique começa a fazer a ação farias vezes e eu queria saber se o problema esta no script.
- Código:
[size=14]using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class animacao2 : MonoBehaviour
{
public static bool attacking;
public float attackTime = 0.5f;
private float attackCounter;
public Animator playerAnimator;
public GameObject weapon;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (!attacking) {
weapon.GetComponent <BoxCollider> ().enabled = false;
if (Input.GetKeyDown (KeyCode.Mouse0)) {
attackCounter = attackTime;
attacking = true;
weapon.GetComponent<BoxCollider> ().enabled = true;
playerAnimator.SetBool ("Soco Esquerdo", true);
}
}
if (attackCounter> 0) {
attackCounter -= Time.deltaTime;
}
if (attackCounter <= 0) {
attacking = false;
playerAnimator.SetBool ("Soco Esquerdo", false);
}
}
}
[/size]
gutovic29- Iniciante
- PONTOS : 2103
REPUTAÇÃO : 1
Respeito as regras :
Re: ESTOU COM UM PROBLEMA EM UM SCRIPT
ja verificou se a sua animação está com o "Loop" Ativado ?
Magnatah- Instrutor
- PONTOS : 3548
REPUTAÇÃO : 209
Idade : 24
Áreas de atuação : Dєรєиvσlvєdσя Wєb(Fяσит-єиd), Blєиdєя, υиiтy, C#, ρнρ є Jαvαรcяiρт.
Respeito as regras :
Re: ESTOU COM UM PROBLEMA EM UM SCRIPT
Talvez a animação esteja se repetindo pq o comando que inicia ela está se ativando por muitas vezes até chegar no valor zero;
A animação depende disto para parar? (playerAnimator.SetBool ("Soco Esquerdo", false)
Vê se a animação não está num loop igual o Magnatah falou.
É... tentei fazer uma coisa, realmente não sei se vai funcionar, mas testa ai e fala se deu certo =p
Comentei as partes que não achei necessário.
Se vc der 3 clicks, a animação irá se repetir 3 vezes até parar, acho que é isso.
A animação depende disto para parar? (playerAnimator.SetBool ("Soco Esquerdo", false)
Vê se a animação não está num loop igual o Magnatah falou.
É... tentei fazer uma coisa, realmente não sei se vai funcionar, mas testa ai e fala se deu certo =p
Comentei as partes que não achei necessário.
Se vc der 3 clicks, a animação irá se repetir 3 vezes até parar, acho que é isso.
- Código:
{
public static bool attacking;
public float attackTime = 0;
//private float attackCounter; //não foi necessário
public Animator playerAnimator;
public GameObject weapon;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
//if (!attacking) { // não foi necessário
//weapon.GetComponent <BoxCollider> ().enabled = false; //foi para o final da Coroutine
if (Input.GetMouseButtonDown (0)) {//if (Input.GetKeyDown (KeyCode.Mouse0)) {
// attackCounter = attackTime;
attacking = true;
attackTime++; // o mesmo que +=1;
//weapon.GetComponent<BoxCollider> ().enabled = true; // foi para a Coroutine
//playerAnimator.SetBool ("Soco Esquerdo", true); // foi para a Coroutine
if(attackTime>0){StartCoroutine ("animAtack");} //inicia a Coroutine "animAtack" se o attackTime for maior que zero
}
//}
if (Input.GetMouseButtonUp (0)) { //desativa "attacking" ao desapertar o botão do mouse
attacking = false;
}
/* if (attackCounter> 0) {
attackCounter -= Time.deltaTime;
}
if (attackCounter <= 0) {
attacking = false;
playerAnimator.SetBool ("Soco Esquerdo", false);
}
*/
}
IEnumerator animAtack() //Coroutine
{
weapon.GetComponent<BoxCollider> ().enabled = true;
playerAnimator.SetBool ("Soco Esquerdo", true);
yield return new WaitForSeconds (0.5f); //tempo de espera em segundos (0.5f = meio segundo)
attackTime -= 1;
if(attackTime>0){ // se o attackTime for maior que zero, a animação começa novamente
StartCoroutine ("animAtack");
}
yield return new WaitForEndOfFrame (); //este comando é o tempo de demora de 1 frame apenas
playerAnimator.SetBool ("Soco Esquerdo", false);
weapon.GetComponent <BoxCollider> ().enabled = false;
}
}
Nalfam- MembroAvançado
- PONTOS : 2436
REPUTAÇÃO : 32
Áreas de atuação : Unity
Respeito as regras :
Re: ESTOU COM UM PROBLEMA EM UM SCRIPT
Esqueci de um detalhe, mals ai
- Código:
{
public static bool attacking;
public float attackTime = 0;
//private float attackCounter; //não foi necessário
public Animator playerAnimator;
public GameObject weapon;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
//if (!attacking) { // não foi necessário
//weapon.GetComponent <BoxCollider> ().enabled = false; //foi para o final da Coroutine
if (Input.GetMouseButtonDown (0)) {//if (Input.GetKeyDown (KeyCode.Mouse0)) {
// attackCounter = attackTime;
attacking = true;
attackTime++; // o mesmo que +=1;
//weapon.GetComponent<BoxCollider> ().enabled = true; // foi para a Coroutine
//playerAnimator.SetBool ("Soco Esquerdo", true); // foi para a Coroutine
if(attackTime>0){StartCoroutine ("animAtack");} //inicia a Coroutine "animAtack" se o attackTime for maior que zero
}
//}
if (Input.GetMouseButtonUp (0)) { //desativa "attacking" ao desapertar o botão do mouse
attacking = false;
}
/* if (attackCounter> 0) {
attackCounter -= Time.deltaTime;
}
if (attackCounter <= 0) {
attacking = false;
playerAnimator.SetBool ("Soco Esquerdo", false);
}
*/
}
IEnumerator animAtack() //Coroutine
{
weapon.GetComponent<BoxCollider> ().enabled = true;
playerAnimator.SetBool ("Soco Esquerdo", true);
yield return new WaitForSeconds (0.5f); //tempo de espera em segundos (0.5f = meio segundo)
attackTime -= 1;
if (attackTime > 0) { // se o attackTime for maior que zero, a animação começa novamente
StartCoroutine ("animAtack");
} else {
yield return new WaitForEndOfFrame (); //este comando é o tempo de demora de 1 frame apenas
playerAnimator.SetBool ("Soco Esquerdo", false);
weapon.GetComponent <BoxCollider> ().enabled = false;
}
}
}
Nalfam- MembroAvançado
- PONTOS : 2436
REPUTAÇÃO : 32
Áreas de atuação : Unity
Respeito as regras :
Re: ESTOU COM UM PROBLEMA EM UM SCRIPT
Nalfam escreveu:Esqueci de um detalhe, mals ai
- Código:
{
public static bool attacking;
public float attackTime = 0;
//private float attackCounter; //não foi necessário
public Animator playerAnimator;
public GameObject weapon;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
//if (!attacking) { // não foi necessário
//weapon.GetComponent <BoxCollider> ().enabled = false; //foi para o final da Coroutine
if (Input.GetMouseButtonDown (0)) {//if (Input.GetKeyDown (KeyCode.Mouse0)) {
// attackCounter = attackTime;
attacking = true;
attackTime++; // o mesmo que +=1;
//weapon.GetComponent<BoxCollider> ().enabled = true; // foi para a Coroutine
//playerAnimator.SetBool ("Soco Esquerdo", true); // foi para a Coroutine
if(attackTime>0){StartCoroutine ("animAtack");} //inicia a Coroutine "animAtack" se o attackTime for maior que zero
}
//}
if (Input.GetMouseButtonUp (0)) { //desativa "attacking" ao desapertar o botão do mouse
attacking = false;
}
/* if (attackCounter> 0) {
attackCounter -= Time.deltaTime;
}
if (attackCounter <= 0) {
attacking = false;
playerAnimator.SetBool ("Soco Esquerdo", false);
}
*/
}
IEnumerator animAtack() //Coroutine
{
weapon.GetComponent<BoxCollider> ().enabled = true;
playerAnimator.SetBool ("Soco Esquerdo", true);
yield return new WaitForSeconds (0.5f); //tempo de espera em segundos (0.5f = meio segundo)
attackTime -= 1;
if (attackTime > 0) { // se o attackTime for maior que zero, a animação começa novamente
StartCoroutine ("animAtack");
} else {
yield return new WaitForEndOfFrame (); //este comando é o tempo de demora de 1 frame apenas
playerAnimator.SetBool ("Soco Esquerdo", false);
weapon.GetComponent <BoxCollider> ().enabled = false;
}
}
}
- Código:
caso ainda não tenha conseguido resolver..
me chama no facebook:
www.facebook.com/felipecirineu
me passa mais informações detalhada. certinho para eu tentar lhe ajudar..
Tópicos semelhantes
» Iluminação (estou com um problema)
» Estou com problema com um script que está dando erro.
» [DUVIDA] estou com um erro no meu script de resolver um problema na timeline
» Estou com um problema de Rigging [Blender]
» ESTOU COM UM PROBLEMA DE ANIMAÇÃO!!!
» Estou com problema com um script que está dando erro.
» [DUVIDA] estou com um erro no meu script de resolver um problema na timeline
» Estou com um problema de Rigging [Blender]
» ESTOU COM UM PROBLEMA DE ANIMAÇÃO!!!
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos