Tiro com Botao UI (ME AJUDEM)
5 participantes
Página 1 de 1
Tiro com Botao UI (ME AJUDEM)
ALGUEM ME AJUDA A FAZER ESSE SCRIPT ATIRAR COM UM BOTAO UI, SOU INICIANTE EM PROGRAMAÇAO.
- Código:
using UnityEngine;
public class PlayerShooting : MonoBehaviour
{
public int damagePerShot = 20;
public float timeBetweenBullets = 0.15f;
public float range = 100f;
float timer;
Ray shootRay = new Ray();
RaycastHit shootHit;
int shootableMask;
ParticleSystem gunParticles;
LineRenderer gunLine;
AudioSource gunAudio;
Light gunLight;
float effectsDisplayTime = 0.2f;
void Awake ()
{
shootableMask = LayerMask.GetMask ("Shootable");
gunParticles = GetComponent<ParticleSystem> ();
gunLine = GetComponent <LineRenderer> ();
gunAudio = GetComponent<AudioSource> ();
gunLight = GetComponent<Light> ();
}
void Update ()
{
timer += Time.deltaTime;
if(Input.GetButton ("Fire1") && timer >= timeBetweenBullets && Time.timeScale != 0)
{
Shoot ();
}
if(timer >= timeBetweenBullets * effectsDisplayTime)
{
DisableEffects ();
}
}
public void DisableEffects ()
{
gunLine.enabled = false;
gunLight.enabled = false;
}
void Shoot ()
{
timer = 0f;
gunAudio.Play ();
gunLight.enabled = true;
gunParticles.Stop ();
gunParticles.Play ();
gunLine.enabled = true;
gunLine.SetPosition (0, transform.position);
shootRay.origin = transform.position;
shootRay.direction = transform.forward;
if(Physics.Raycast (shootRay, out shootHit, range, shootableMask))
{
EnemyHealth enemyHealth = shootHit.collider.GetComponent <EnemyHealth> ();
if(enemyHealth != null)
{
enemyHealth.TakeDamage (damagePerShot, shootHit.point);
}
gunLine.SetPosition (1, shootHit.point);
}
else
{
gunLine.SetPosition (1, shootRay.origin + shootRay.direction * range);
}
}
}
Re: Tiro com Botao UI (ME AJUDEM)
Oi! Você já tentou utilizar um botão na UI, e usar esse botão para ativar uma booleana que ativará o tiro?
É bem simples, e se quiser posso ensinar!
Edit: Esse é aquele script do joguinho da Unity né?
É bem simples, e se quiser posso ensinar!
Edit: Esse é aquele script do joguinho da Unity né?
Re: Tiro com Botao UI (ME AJUDEM)
assista a esse vídeo e se quiser a série delebruxamissi escreveu:ALGUEM ME AJUDA A FAZER ESSE SCRIPT ATIRAR COM UM BOTAO UI, SOU INICIANTE EM PROGRAMAÇAO.
- Código:
using UnityEngine;
public class PlayerShooting : MonoBehaviour
{
public int damagePerShot = 20;
public float timeBetweenBullets = 0.15f;
public float range = 100f;
float timer;
Ray shootRay = new Ray();
RaycastHit shootHit;
int shootableMask;
ParticleSystem gunParticles;
LineRenderer gunLine;
AudioSource gunAudio;
Light gunLight;
float effectsDisplayTime = 0.2f;
void Awake ()
{
shootableMask = LayerMask.GetMask ("Shootable");
gunParticles = GetComponent<ParticleSystem> ();
gunLine = GetComponent <LineRenderer> ();
gunAudio = GetComponent<AudioSource> ();
gunLight = GetComponent<Light> ();
}
void Update ()
{
timer += Time.deltaTime;
if(Input.GetButton ("Fire1") && timer >= timeBetweenBullets && Time.timeScale != 0)
{
Shoot ();
}
if(timer >= timeBetweenBullets * effectsDisplayTime)
{
DisableEffects ();
}
}
public void DisableEffects ()
{
gunLine.enabled = false;
gunLight.enabled = false;
}
void Shoot ()
{
timer = 0f;
gunAudio.Play ();
gunLight.enabled = true;
gunParticles.Stop ();
gunParticles.Play ();
gunLine.enabled = true;
gunLine.SetPosition (0, transform.position);
shootRay.origin = transform.position;
shootRay.direction = transform.forward;
if(Physics.Raycast (shootRay, out shootHit, range, shootableMask))
{
EnemyHealth enemyHealth = shootHit.collider.GetComponent <EnemyHealth> ();
if(enemyHealth != null)
{
enemyHealth.TakeDamage (damagePerShot, shootHit.point);
}
gunLine.SetPosition (1, shootHit.point);
}
else
{
gunLine.SetPosition (1, shootRay.origin + shootRay.direction * range);
}
}
}
Gabriel César O- Profissional
- PONTOS : 3985
REPUTAÇÃO : 217
Idade : 23
Áreas de atuação : (ESTUDANDO SEGUNDO GRAU), (FUÇANDO NO UNITY)){
Respeito as regras :
Re: Tiro com Botao UI (ME AJUDEM)
Se puder me ensinar eu agradeço kkmarcos4503 escreveu:Oi! Você já tentou utilizar um botão na UI, e usar esse botão para ativar uma booleana que ativará o tiro?
É bem simples, e se quiser posso ensinar!
Edit: Esse é aquele script do joguinho da Unity né?
Simm é o script da unity
Re: Tiro com Botao UI (ME AJUDEM)
Bom. Eu troquei o Input.KeyDown lá por uma variavel que se chama "TocouEmAtirar", toda vez que ela for "True" o seu bonequinho vai atirar. Como a gente vai deixar ela em true? É isso que vou ensinar agora.
Primeiro o script
Bom. Agora com a variavel no seu script, voce vai fazer o seguinte.
1 - Criar um botão na sua UI, e adicionar o componente "Event Trigger" nele.
2 - Voce vai clicar em "Add New Event Type"
3 - Adicione "OnPointerDown"
4 - Adicione "OnPointerUp'
5 - Voce vera 2 quadrados cinza novos. Cada um deles tem um botão de + e -
6 - Clique no + do primeiro quadro e do segundo.
7 - Apos clicar nesse + nos dois quadros, voce vera que vai aparecer uma caixinha com "None (Object)" Voce vai pegar o objeto em sua cena, que possui esse script que te passei acima, e arrastar pra dentro desse lugar. Faça isso nos dois quadros.
8 - Nessas duas caixinhas, tem um botão escrito "No Function", voce vai clicar nela, e vai aparecer o nome do seu script (PlayerShooting), selecione-o e depois selecione "RecebeToque". Repita isso nas duas caixinhas.
9 - Voce vera que vai aparecer 1 booleana em cada caixinha que se chama "Transmissor", Na caixinha que se chama "OnPointerDown" voce vai deixar o Transmissor ligado, na caixinha "OnPointerUp" voce vai deixar essa caixinha desmarcada.
10 - Lembre-se de adicionar o objeto "Event Sysytem" na sua cena! Se não isso não vai funcionar!
O que fizemos aqui? Simples. Eu criei uma public void, que transfere o estado atual do seu botão para a nossa variavel que faz o player atirar. Com o "OnPointerDown" voce informa ao jogo que o jogador esta tocando no botão, e com o "OnPointerUp" voce informa ao jogador que o jogador parou de tocar no botão. Enquanto o jogador estiver com o botão pressionado, seu personagem vai atirar!
Espero ter ajudado! Se tiver alguma duvida, é so falar!
Primeiro o script
- Código:
using UnityEngine;
public class PlayerShooting : MonoBehaviour
{
public int damagePerShot = 20;
public float timeBetweenBullets = 0.15f;
public float range = 100f;
float timer;
Ray shootRay = new Ray();
RaycastHit shootHit;
int shootableMask;
ParticleSystem gunParticles;
LineRenderer gunLine;
AudioSource gunAudio;
Light gunLight;
float effectsDisplayTime = 0.2f;
private bool TocouEmAtirar;
void Awake()
{
shootableMask = LayerMask.GetMask("Shootable");
gunParticles = GetComponent<ParticleSystem>();
gunLine = GetComponent<LineRenderer>();
gunAudio = GetComponent<AudioSource>();
gunLight = GetComponent<Light>();
}
void Update()
{
timer += Time.deltaTime;
if (TocouEmAtirar == true && timer >= timeBetweenBullets && Time.timeScale != 0) //Aqui eu troquei o Input.GetKey pela nossa nova variavel
{
Shoot();
}
if (timer >= timeBetweenBullets * effectsDisplayTime)
{
DisableEffects();
}
}
public void DisableEffects()
{
gunLine.enabled = false;
gunLight.enabled = false;
}
void Shoot()
{
timer = 0f;
gunAudio.Play();
gunLight.enabled = true;
gunParticles.Stop();
gunParticles.Play();
gunLine.enabled = true;
gunLine.SetPosition(0, transform.position);
shootRay.origin = transform.position;
shootRay.direction = transform.forward;
if (Physics.Raycast(shootRay, out shootHit, range, shootableMask))
{
EnemyHealth enemyHealth = shootHit.collider.GetComponent<EnemyHealth>();
if (enemyHealth != null)
{
enemyHealth.TakeDamage(damagePerShot, shootHit.point);
}
gunLine.SetPosition(1, shootHit.point);
}
else
{
gunLine.SetPosition(1, shootRay.origin + shootRay.direction * range);
}
}
public void RecebeToque(bool transmissor) //Esse public void, vai receber os dados do seu botão da UI
{
TocouEmAtirar = transmissor;
}
}
Bom. Agora com a variavel no seu script, voce vai fazer o seguinte.
1 - Criar um botão na sua UI, e adicionar o componente "Event Trigger" nele.
2 - Voce vai clicar em "Add New Event Type"
3 - Adicione "OnPointerDown"
4 - Adicione "OnPointerUp'
5 - Voce vera 2 quadrados cinza novos. Cada um deles tem um botão de + e -
6 - Clique no + do primeiro quadro e do segundo.
7 - Apos clicar nesse + nos dois quadros, voce vera que vai aparecer uma caixinha com "None (Object)" Voce vai pegar o objeto em sua cena, que possui esse script que te passei acima, e arrastar pra dentro desse lugar. Faça isso nos dois quadros.
8 - Nessas duas caixinhas, tem um botão escrito "No Function", voce vai clicar nela, e vai aparecer o nome do seu script (PlayerShooting), selecione-o e depois selecione "RecebeToque". Repita isso nas duas caixinhas.
9 - Voce vera que vai aparecer 1 booleana em cada caixinha que se chama "Transmissor", Na caixinha que se chama "OnPointerDown" voce vai deixar o Transmissor ligado, na caixinha "OnPointerUp" voce vai deixar essa caixinha desmarcada.
10 - Lembre-se de adicionar o objeto "Event Sysytem" na sua cena! Se não isso não vai funcionar!
O que fizemos aqui? Simples. Eu criei uma public void, que transfere o estado atual do seu botão para a nossa variavel que faz o player atirar. Com o "OnPointerDown" voce informa ao jogo que o jogador esta tocando no botão, e com o "OnPointerUp" voce informa ao jogador que o jogador parou de tocar no botão. Enquanto o jogador estiver com o botão pressionado, seu personagem vai atirar!
Espero ter ajudado! Se tiver alguma duvida, é so falar!
Re: Tiro com Botao UI (ME AJUDEM)
Muito Obrigado irei testar aqui e ja te falo ! :Dmarcos4503 escreveu:Ta ai, o resultado!
Re: Tiro com Botao UI (ME AJUDEM)
MUITOOO OBRIGAOO MANOW FUNCIONOU PERFEITAMENTE PARABENS!!marcos4503 escreveu:Bom. Eu troquei o Input.KeyDown lá por uma variavel que se chama "TocouEmAtirar", toda vez que ela for "True" o seu bonequinho vai atirar. Como a gente vai deixar ela em true? É isso que vou ensinar agora.
Primeiro o script
- Código:
using UnityEngine;
public class PlayerShooting : MonoBehaviour
{
public int damagePerShot = 20;
public float timeBetweenBullets = 0.15f;
public float range = 100f;
float timer;
Ray shootRay = new Ray();
RaycastHit shootHit;
int shootableMask;
ParticleSystem gunParticles;
LineRenderer gunLine;
AudioSource gunAudio;
Light gunLight;
float effectsDisplayTime = 0.2f;
private bool TocouEmAtirar;
void Awake()
{
shootableMask = LayerMask.GetMask("Shootable");
gunParticles = GetComponent<ParticleSystem>();
gunLine = GetComponent<LineRenderer>();
gunAudio = GetComponent<AudioSource>();
gunLight = GetComponent<Light>();
}
void Update()
{
timer += Time.deltaTime;
if (TocouEmAtirar == true && timer >= timeBetweenBullets && Time.timeScale != 0) //Aqui eu troquei o Input.GetKey pela nossa nova variavel
{
Shoot();
}
if (timer >= timeBetweenBullets * effectsDisplayTime)
{
DisableEffects();
}
}
public void DisableEffects()
{
gunLine.enabled = false;
gunLight.enabled = false;
}
void Shoot()
{
timer = 0f;
gunAudio.Play();
gunLight.enabled = true;
gunParticles.Stop();
gunParticles.Play();
gunLine.enabled = true;
gunLine.SetPosition(0, transform.position);
shootRay.origin = transform.position;
shootRay.direction = transform.forward;
if (Physics.Raycast(shootRay, out shootHit, range, shootableMask))
{
EnemyHealth enemyHealth = shootHit.collider.GetComponent<EnemyHealth>();
if (enemyHealth != null)
{
enemyHealth.TakeDamage(damagePerShot, shootHit.point);
}
gunLine.SetPosition(1, shootHit.point);
}
else
{
gunLine.SetPosition(1, shootRay.origin + shootRay.direction * range);
}
}
public void RecebeToque(bool transmissor) //Esse public void, vai receber os dados do seu botão da UI
{
TocouEmAtirar = transmissor;
}
}
Bom. Agora com a variavel no seu script, voce vai fazer o seguinte.
1 - Criar um botão na sua UI, e adicionar o componente "Event Trigger" nele.
2 - Voce vai clicar em "Add New Event Type"
3 - Adicione "OnPointerDown"
4 - Adicione "OnPointerUp'
5 - Voce vera 2 quadrados cinza novos. Cada um deles tem um botão de + e -
6 - Clique no + do primeiro quadro e do segundo.
7 - Apos clicar nesse + nos dois quadros, voce vera que vai aparecer uma caixinha com "None (Object)" Voce vai pegar o objeto em sua cena, que possui esse script que te passei acima, e arrastar pra dentro desse lugar. Faça isso nos dois quadros.
8 - Nessas duas caixinhas, tem um botão escrito "No Function", voce vai clicar nela, e vai aparecer o nome do seu script (PlayerShooting), selecione-o e depois selecione "RecebeToque". Repita isso nas duas caixinhas.
9 - Voce vera que vai aparecer 1 booleana em cada caixinha que se chama "Transmissor", Na caixinha que se chama "OnPointerDown" voce vai deixar o Transmissor ligado, na caixinha "OnPointerUp" voce vai deixar essa caixinha desmarcada.
10 - Lembre-se de adicionar o objeto "Event Sysytem" na sua cena! Se não isso não vai funcionar!
O que fizemos aqui? Simples. Eu criei uma public void, que transfere o estado atual do seu botão para a nossa variavel que faz o player atirar. Com o "OnPointerDown" voce informa ao jogo que o jogador esta tocando no botão, e com o "OnPointerUp" voce informa ao jogador que o jogador parou de tocar no botão. Enquanto o jogador estiver com o botão pressionado, seu personagem vai atirar!
Espero ter ajudado! Se tiver alguma duvida, é so falar!
Re: Tiro com Botao UI (ME AJUDEM)
kkkkkkkkkk
Imagina! Tamo ai pra ajudar e ser ajudado! Se precisar de alguma ajuda, só falar!
Imagina! Tamo ai pra ajudar e ser ajudado! Se precisar de alguma ajuda, só falar!
Re: Tiro com Botao UI (ME AJUDEM)
Como eu faria para esse msm botao chamar uma animaçao?marcos4503 escreveu:kkkkkkkkkk
Imagina! Tamo ai pra ajudar e ser ajudado! Se precisar de alguma ajuda, só falar!
Que no caso seria a animaçao "shoot"
Re: Tiro com Botao UI (ME AJUDEM)
Ai voce teria que colocar o animator no personagem, colocar uma animação nele que se chama "Shoot" e chamar uma classe do animator sempre que o player tocar em atirar.
Re: Tiro com Botao UI (ME AJUDEM)
Ola a todos. preciso de uma ajuda aqui no script com o tempo de intervalo que sai os tiros. Eu fiz algumas mudanças no meu script seguindo as orientações para um outro usuário acima que abriu o tópico.
O problema é o seguinte, no botao UI quando se clica e segura o botao, sai tiros sem intervalo de tempo e essa parte do código é extremamente complicada pra mim , sou iniciante ainda.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ControleDoJogador : MonoBehaviour
{
public Rigidbody2D oRigidbody2D;
public GameObject laserDoJogador;
public Transform localDoDisparoUnico;
public Transform localDoDisparoDaEsquerda;
public Transform localDoDisparoDaDireita;
public float tempoMaximoDosLasersDuplos;
public float tempoAtualDosLasersDuplos;
public static bool TocouEmAtirar;
public float velocidadeDaNave;
public bool temLaserDuplo;
private Vector2 teclasApertadas;
void Start()
{
temLaserDuplo = false;
tempoAtualDosLasersDuplos = tempoMaximoDosLasersDuplos;
}
void Update()
{
MovimentarJogador();
AtirarLaser();
if(temLaserDuplo == true)
{
tempoAtualDosLasersDuplos -= Time.deltaTime;
if(tempoAtualDosLasersDuplos <=0)
{
DesativarLaserDuplo();
}
}
}
private void MovimentarJogador()
{
teclasApertadas = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
oRigidbody2D.velocity = teclasApertadas.normalized * velocidadeDaNave;
}
public void AtirarLaser()
{
if (TocouEmAtirar == true)
//if (Input.GetButtonDown("Fire1"))
{
if (temLaserDuplo == false)
{
Instantiate(laserDoJogador, localDoDisparoUnico.position, localDoDisparoUnico.rotation);
//tempoAtualDosLasersDuplos -= TimeDeltaTime;
}
else
{
Instantiate(laserDoJogador, localDoDisparoDaEsquerda.position, localDoDisparoDaEsquerda.rotation);
Instantiate(laserDoJogador, localDoDisparoDaDireita.position, localDoDisparoDaDireita.rotation);
}
EfeitosSonoros.instance.somDoLaserDoJogador.Play();
}
}
private void DesativarLaserDuplo()
{
temLaserDuplo = false;
tempoAtualDosLasersDuplos = tempoMaximoDosLasersDuplos;
}
//public void RecebeToque(bool transmissor) //Esse public void, vai receber os dados do seu botão da UI
//{
// TocouEmAtirar = transmissor;
// }
}
O problema é o seguinte, no botao UI quando se clica e segura o botao, sai tiros sem intervalo de tempo e essa parte do código é extremamente complicada pra mim , sou iniciante ainda.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ControleDoJogador : MonoBehaviour
{
public Rigidbody2D oRigidbody2D;
public GameObject laserDoJogador;
public Transform localDoDisparoUnico;
public Transform localDoDisparoDaEsquerda;
public Transform localDoDisparoDaDireita;
public float tempoMaximoDosLasersDuplos;
public float tempoAtualDosLasersDuplos;
public static bool TocouEmAtirar;
public float velocidadeDaNave;
public bool temLaserDuplo;
private Vector2 teclasApertadas;
void Start()
{
temLaserDuplo = false;
tempoAtualDosLasersDuplos = tempoMaximoDosLasersDuplos;
}
void Update()
{
MovimentarJogador();
AtirarLaser();
if(temLaserDuplo == true)
{
tempoAtualDosLasersDuplos -= Time.deltaTime;
if(tempoAtualDosLasersDuplos <=0)
{
DesativarLaserDuplo();
}
}
}
private void MovimentarJogador()
{
teclasApertadas = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
oRigidbody2D.velocity = teclasApertadas.normalized * velocidadeDaNave;
}
public void AtirarLaser()
{
if (TocouEmAtirar == true)
//if (Input.GetButtonDown("Fire1"))
{
if (temLaserDuplo == false)
{
Instantiate(laserDoJogador, localDoDisparoUnico.position, localDoDisparoUnico.rotation);
//tempoAtualDosLasersDuplos -= TimeDeltaTime;
}
else
{
Instantiate(laserDoJogador, localDoDisparoDaEsquerda.position, localDoDisparoDaEsquerda.rotation);
Instantiate(laserDoJogador, localDoDisparoDaDireita.position, localDoDisparoDaDireita.rotation);
}
EfeitosSonoros.instance.somDoLaserDoJogador.Play();
}
}
private void DesativarLaserDuplo()
{
temLaserDuplo = false;
tempoAtualDosLasersDuplos = tempoMaximoDosLasersDuplos;
}
//public void RecebeToque(bool transmissor) //Esse public void, vai receber os dados do seu botão da UI
//{
// TocouEmAtirar = transmissor;
// }
}
Robins Sandi- Iniciante
- PONTOS : 485
REPUTAÇÃO : 1
Respeito as regras :
Re: Tiro com Botao UI (ME AJUDEM)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ControleDoJogador : MonoBehaviour
{
public Rigidbody2D oRigidbody2D;
public GameObject laserDoJogador;
public Transform localDoDisparoUnico;
public Transform localDoDisparoDaEsquerda;
public Transform localDoDisparoDaDireita;
public float tempoMaximoDosLasersDuplos;
public float tempoAtualDosLasersDuplos;
public static bool TocouEmAtirar;
public float velocidadeDaNave;
public bool temLaserDuplo;
private Vector2 teclasApertadas;
void Start()
{
temLaserDuplo = false;
tempoAtualDosLasersDuplos = tempoMaximoDosLasersDuplos;
}
void Update()
{
MovimentarJogador();
AtirarLaser();
if(temLaserDuplo == true)
{
tempoAtualDosLasersDuplos -= Time.deltaTime;
if(tempoAtualDosLasersDuplos <=0)
{
DesativarLaserDuplo();
}
}
}
private void MovimentarJogador()
{
teclasApertadas = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
oRigidbody2D.velocity = teclasApertadas.normalized * velocidadeDaNave;
}
public void AtirarLaser()
{
if (TocouEmAtirar == true)
//if (Input.GetButtonDown("Fire1"))
{
if (temLaserDuplo == false)
{
Instantiate(laserDoJogador, localDoDisparoUnico.position, localDoDisparoUnico.rotation);
//tempoAtualDosLasersDuplos -= TimeDeltaTime;
}
else
{
Instantiate(laserDoJogador, localDoDisparoDaEsquerda.position, localDoDisparoDaEsquerda.rotation);
Instantiate(laserDoJogador, localDoDisparoDaDireita.position, localDoDisparoDaDireita.rotation);
}
EfeitosSonoros.instance.somDoLaserDoJogador.Play();
}
}
private void DesativarLaserDuplo()
{
temLaserDuplo = false;
tempoAtualDosLasersDuplos = tempoMaximoDosLasersDuplos;
}
//public void RecebeToque(bool transmissor) //Esse public void, vai receber os dados do seu botão da UI
//{
// TocouEmAtirar = transmissor;
// }
}
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ControleDoJogador : MonoBehaviour
{
public Rigidbody2D oRigidbody2D;
public GameObject laserDoJogador;
public Transform localDoDisparoUnico;
public Transform localDoDisparoDaEsquerda;
public Transform localDoDisparoDaDireita;
public float tempoMaximoDosLasersDuplos;
public float tempoAtualDosLasersDuplos;
public static bool TocouEmAtirar;
public float velocidadeDaNave;
public bool temLaserDuplo;
private Vector2 teclasApertadas;
void Start()
{
temLaserDuplo = false;
tempoAtualDosLasersDuplos = tempoMaximoDosLasersDuplos;
}
void Update()
{
MovimentarJogador();
AtirarLaser();
if(temLaserDuplo == true)
{
tempoAtualDosLasersDuplos -= Time.deltaTime;
if(tempoAtualDosLasersDuplos <=0)
{
DesativarLaserDuplo();
}
}
}
private void MovimentarJogador()
{
teclasApertadas = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
oRigidbody2D.velocity = teclasApertadas.normalized * velocidadeDaNave;
}
public void AtirarLaser()
{
if (TocouEmAtirar == true)
//if (Input.GetButtonDown("Fire1"))
{
if (temLaserDuplo == false)
{
Instantiate(laserDoJogador, localDoDisparoUnico.position, localDoDisparoUnico.rotation);
//tempoAtualDosLasersDuplos -= TimeDeltaTime;
}
else
{
Instantiate(laserDoJogador, localDoDisparoDaEsquerda.position, localDoDisparoDaEsquerda.rotation);
Instantiate(laserDoJogador, localDoDisparoDaDireita.position, localDoDisparoDaDireita.rotation);
}
EfeitosSonoros.instance.somDoLaserDoJogador.Play();
}
}
private void DesativarLaserDuplo()
{
temLaserDuplo = false;
tempoAtualDosLasersDuplos = tempoMaximoDosLasersDuplos;
}
//public void RecebeToque(bool transmissor) //Esse public void, vai receber os dados do seu botão da UI
//{
// TocouEmAtirar = transmissor;
// }
}
Robins Sandi- Iniciante
- PONTOS : 485
REPUTAÇÃO : 1
Respeito as regras :
Re: Tiro com Botao UI (ME AJUDEM)
Ola, nao sei apagar a ultima postagem que foi repitida se alguém puder deletar pra mim.
Robins Sandi- Iniciante
- PONTOS : 485
REPUTAÇÃO : 1
Respeito as regras :
Re: Tiro com Botao UI (ME AJUDEM)
Robins Sandi escreveu:Ola, nao sei apagar a ultima postagem que foi repitida se alguém puder deletar pra mim.
Adicione uma couroutine para fazer o delay de tempo entre os tiros.
Ficaria +/- isso:
- Código:
IEnumerator void AtirarLaser()
{
if (TocouEmAtirar == true)
//if (Input.GetButtonDown("Fire1"))
{
if (temLaserDuplo == false)
{
Instantiate(laserDoJogador, localDoDisparoUnico.position, localDoDisparoUnico.rotation);
//tempoAtualDosLasersDuplos -= TimeDeltaTime;
}
else
{
Instantiate(laserDoJogador, localDoDisparoDaEsquerda.position, localDoDisparoDaEsquerda.rotation);
Instantiate(laserDoJogador, localDoDisparoDaDireita.position, localDoDisparoDaDireita.rotation);
}
EfeitosSonoros.instance.somDoLaserDoJogador.Play();
yield return new WaitForSeconds(.1f); // <-----------------------------------TEMPO PARA AGUARDAR PARA O TIRO
}
}
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos