Problema com um jogo de tiro em 1D
Página 1 de 1
Problema com um jogo de tiro em 1D
Imagens aqui.
O problema é que quando inicio a cena de jogo, vai diretamente para a cena de perdeu. Como funciona meu jogo?
quando o jogador aperta espaço no computador o personagem jogável, a barra marrom de largura 50 pixels atira um tiro, uma barra branca de largura 10 pixels. o inimigo vermelho é destruído com 6 tiros. o inimigo laranja é destruído com 5 tiros. o inimigo amarelo é destruído com 4 tiros. o inimigo verde é destruído com 3 tiros. o inimigo azul é destruído com 2 tiros. o inimigo roxo é destruído com 1 tiros. cada inimigo é uma barra de largura 50 pixels. quando o jogador chega à barra bege de 50 pixels de largura, ele ganha o jogo. se o jogador encostar em um inimigo ou em um tiro, ele perde o jogo.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class ColidirJogador : MonoBehaviour
{
private float jogadorVelocidade, inimigoVelocidade, tiroVelocidade;
public GameObject jogador, barraGanhou;
public GameObject[] inimigos;
public GameObject[] tiros;
public GameObject sfxFim;
public Sprite[] spriteInimigos;
private int i, j;
// Start is called before the first frame update
void Start()
{
Application.runInBackground = true;
jogadorVelocidade = 1.0f;
inimigoVelocidade = 10.0f;
tiroVelocidade = 100.0f;
i = 0;
j = 0;
}
// Update is called once per frame
void Update()
{
jogador.transform.position = jogador.transform.position + new Vector3(jogadorVelocidade, 0, 0) * Time.deltaTime;
inimigos[i].transform.position = inimigos[i].transform.position + new Vector3(-inimigoVelocidade, 0, 0) * Time.deltaTime;
if (jogador.transform.position.x >= inimigos[i].transform.position.x - inimigos[i].GetComponent<Rect>().width)
{
// collision detected!
sfxFim.GetComponent<AudioSource>().Play();
SceneManager.LoadScene(2);
}
i++;
if (i >= 6) i = 0;
if (jogador.transform.position.x >= barraGanhou.transform.position.x - barraGanhou.GetComponent<Rect>().width)
{
// collision detected!
sfxFim.GetComponent<AudioSource>().Play();
SceneManager.LoadScene(1);
}
if (tiros[j].activeInHierarchy) {
tiros[j].transform.position = tiros[j].transform.position + new Vector3(tiroVelocidade, 0, 0) * Time.deltaTime;
if (jogador.transform.position.x <= tiros[j].transform.position.x - tiros[j].GetComponent<Rect>().width) tiros[j].GetComponent<BoxCollider2D>().isTrigger = false;
if (jogador.transform.position.x >= tiros[j].transform.position.x - tiros[j].GetComponent<Rect>().width && !tiros[j].GetComponent<BoxCollider2D>().isTrigger)
{
// collision detected!
sfxFim.GetComponent<AudioSource>().Play();
SceneManager.LoadScene(2);
}
}
if (Input.GetKeyDown("space") && !tiros[j].activeInHierarchy && j >= 0 && j <= 5 && tiros[j].GetComponent<BoxCollider2D>().isTrigger)
{
tiros[j].SetActive(true);
j++;
}
if(tiros[0].transform.position.x >= inimigos[0].transform.position.x - inimigos[0].GetComponent<Rect>().width)
{
Destroy(inimigos[0]);
tiros[0].SetActive(false);
tiros[0].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[0].transform.position = new Vector3(0, 0, 0);
tiros[1].SetActive(false);
tiros[1].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[1].transform.position = new Vector3(0, 0, 0);
tiros[2].SetActive(false);
tiros[2].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[2].transform.position = new Vector3(0, 0, 0);
tiros[3].SetActive(false);
tiros[3].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[3].transform.position = new Vector3(0, 0, 0);
tiros[4].SetActive(false);
tiros[4].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[4].transform.position = new Vector3(0, 0, 0);
tiros[5].SetActive(false);
tiros[5].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[5].transform.position = new Vector3(0, 0, 0);
j = 0;
}
if (tiros[0].transform.position.x >= inimigos[1].transform.position.x - inimigos[1].GetComponent<Rect>().width &&
tiros[1].transform.position.x >= tiros[0].transform.position.x - tiros[0].GetComponent<Rect>().width)
{
Destroy(inimigos[1]);
tiros[0].SetActive(false);
tiros[0].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[0].transform.position = new Vector3(0, 0, 0);
tiros[1].SetActive(false);
tiros[1].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[1].transform.position = new Vector3(0, 0, 0);
tiros[2].SetActive(false);
tiros[2].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[2].transform.position = new Vector3(0, 0, 0);
tiros[3].SetActive(false);
tiros[3].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[3].transform.position = new Vector3(0, 0, 0);
tiros[4].SetActive(false);
tiros[4].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[4].transform.position = new Vector3(0, 0, 0);
tiros[5].SetActive(false);
tiros[5].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[5].transform.position = new Vector3(0, 0, 0);
j = 0;
}
if (tiros[0].transform.position.x >= inimigos[2].transform.position.x - inimigos[2].GetComponent<Rect>().width &&
tiros[1].transform.position.x >= tiros[0].transform.position.x - tiros[0].GetComponent<Rect>().width &&
tiros[2].transform.position.x >= tiros[1].transform.position.x - tiros[1].GetComponent<Rect>().width)
{
Destroy(inimigos[2]);
tiros[0].SetActive(false);
tiros[0].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[0].transform.position = new Vector3(0, 0, 0);
tiros[1].SetActive(false);
tiros[1].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[1].transform.position = new Vector3(0, 0, 0);
tiros[2].SetActive(false);
tiros[2].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[2].transform.position = new Vector3(0, 0, 0);
tiros[3].SetActive(false);
tiros[3].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[3].transform.position = new Vector3(0, 0, 0);
tiros[4].SetActive(false);
tiros[4].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[4].transform.position = new Vector3(0, 0, 0);
tiros[5].SetActive(false);
tiros[5].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[5].transform.position = new Vector3(0, 0, 0);
j = 0;
}
if (tiros[0].transform.position.x >= inimigos[3].transform.position.x - inimigos[3].GetComponent<Rect>().width &&
tiros[1].transform.position.x >= tiros[0].transform.position.x - tiros[0].GetComponent<Rect>().width &&
tiros[2].transform.position.x >= tiros[1].transform.position.x - tiros[1].GetComponent<Rect>().width &&
tiros[3].transform.position.x >= tiros[2].transform.position.x - tiros[2].GetComponent<Rect>().width)
{
Destroy(inimigos[3]);
tiros[0].SetActive(false);
tiros[0].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[0].transform.position = new Vector3(0, 0, 0);
tiros[1].SetActive(false);
tiros[1].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[1].transform.position = new Vector3(0, 0, 0);
tiros[2].SetActive(false);
tiros[2].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[2].transform.position = new Vector3(0, 0, 0);
tiros[3].SetActive(false);
tiros[3].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[3].transform.position = new Vector3(0, 0, 0);
tiros[4].SetActive(false);
tiros[4].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[4].transform.position = new Vector3(0, 0, 0);
tiros[5].SetActive(false);
tiros[5].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[5].transform.position = new Vector3(0, 0, 0);
j = 0;
}
if (tiros[0].transform.position.x >= inimigos[4].transform.position.x - inimigos[4].GetComponent<Rect>().width &&
tiros[1].transform.position.x >= tiros[0].transform.position.x - tiros[0].GetComponent<Rect>().width &&
tiros[2].transform.position.x >= tiros[1].transform.position.x - tiros[1].GetComponent<Rect>().width &&
tiros[3].transform.position.x >= tiros[2].transform.position.x - tiros[2].GetComponent<Rect>().width &&
tiros[4].transform.position.x >= tiros[3].transform.position.x - tiros[3].GetComponent<Rect>().width)
{
Destroy(inimigos[4]);
tiros[0].SetActive(false);
tiros[0].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[0].transform.position = new Vector3(0, 0, 0);
tiros[1].SetActive(false);
tiros[1].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[1].transform.position = new Vector3(0, 0, 0);
tiros[2].SetActive(false);
tiros[2].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[2].transform.position = new Vector3(0, 0, 0);
tiros[3].SetActive(false);
tiros[3].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[3].transform.position = new Vector3(0, 0, 0);
tiros[4].SetActive(false);
tiros[4].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[4].transform.position = new Vector3(0, 0, 0);
tiros[5].SetActive(false);
tiros[5].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[5].transform.position = new Vector3(0, 0, 0);
j = 0;
}
if (tiros[0].transform.position.x >= inimigos[5].transform.position.x - inimigos[5].GetComponent<Rect>().width &&
tiros[1].transform.position.x >= tiros[0].transform.position.x - tiros[0].GetComponent<Rect>().width &&
tiros[2].transform.position.x >= tiros[1].transform.position.x - tiros[1].GetComponent<Rect>().width &&
tiros[3].transform.position.x >= tiros[2].transform.position.x - tiros[2].GetComponent<Rect>().width &&
tiros[4].transform.position.x >= tiros[3].transform.position.x - tiros[3].GetComponent<Rect>().width &&
tiros[5].transform.position.x >= tiros[4].transform.position.x - tiros[4].GetComponent<Rect>().width)
{
Destroy(inimigos[5]);
tiros[0].SetActive(false);
tiros[0].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[0].transform.position = new Vector3(0, 0, 0);
tiros[1].SetActive(false);
tiros[1].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[1].transform.position = new Vector3(0, 0, 0);
tiros[2].SetActive(false);
tiros[2].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[2].transform.position = new Vector3(0, 0, 0);
tiros[3].SetActive(false);
tiros[3].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[3].transform.position = new Vector3(0, 0, 0);
tiros[4].SetActive(false);
tiros[4].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[4].transform.position = new Vector3(0, 0, 0);
tiros[5].SetActive(false);
tiros[5].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[5].transform.position = new Vector3(0, 0, 0);
j = 0;
}
}
}
O problema é que quando inicio a cena de jogo, vai diretamente para a cena de perdeu. Como funciona meu jogo?
quando o jogador aperta espaço no computador o personagem jogável, a barra marrom de largura 50 pixels atira um tiro, uma barra branca de largura 10 pixels. o inimigo vermelho é destruído com 6 tiros. o inimigo laranja é destruído com 5 tiros. o inimigo amarelo é destruído com 4 tiros. o inimigo verde é destruído com 3 tiros. o inimigo azul é destruído com 2 tiros. o inimigo roxo é destruído com 1 tiros. cada inimigo é uma barra de largura 50 pixels. quando o jogador chega à barra bege de 50 pixels de largura, ele ganha o jogo. se o jogador encostar em um inimigo ou em um tiro, ele perde o jogo.
tautologias345- Iniciante
- PONTOS : 1492
REPUTAÇÃO : 0
Respeito as regras :
Re: Problema com um jogo de tiro em 1D
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class ColidirJogador : MonoBehaviour
{
private float jogadorVelocidade, inimigoVelocidade, tiroVelocidade;
public GameObject jogador, barraGanhou;
public GameObject[] inimigos;
public GameObject[] tiros;
public GameObject sfxFim;
public Sprite[] spriteInimigos;
private int i, j;
private bool tiro0, tiro1, tiro2, tiro3, tiro4, tiro5;
// Start is called before the first frame update
void Start()
{
Application.runInBackground = true;
jogadorVelocidade = 1.0f;
inimigoVelocidade = 10.0f;
tiroVelocidade = 100.0f;
i = 0;
j = 0;
tiro0 = false;
tiro1 = false;
tiro2 = false;
tiro3 = false;
tiro4 = false;
tiro5 = false;
}
// Update is called once per frame
void Update()
{
jogador.transform.position = jogador.transform.position + new Vector3(jogadorVelocidade, 0, 0) * Time.deltaTime;
inimigos[i].transform.position = inimigos[i].transform.position + new Vector3(-inimigoVelocidade, 0, 0) * Time.deltaTime;
i++;
if (i >= 6) i = 0;
if (tiros[j].activeInHierarchy) {
tiros[j].transform.position = tiros[j].transform.position + new Vector3(tiroVelocidade, 0, 0) * Time.deltaTime;
}
if (Input.GetKeyDown("space") && !tiros[j].activeInHierarchy && j >= 0 && j <= 5 && tiros[j].GetComponent<BoxCollider2D>().isTrigger)
{
if (j == 0) tiro0 = true;
else if (j == 1) tiro1 = true;
else if (j == 2) tiro2 = true;
else if (j == 3) tiro3 = true;
else if (j == 4) tiro4 = true;
else if (j == 5) tiro5 = true;
tiros[j].SetActive(true);
j++;
}
}
void OnCollisionEnter2D(Collision2D colisor)
{
if (this.gameObject == jogador && colisor.gameObject.tag == "Enemie") {
sfxFim.GetComponent<AudioSource>().Play();
SceneManager.LoadScene(2);
}
if (this.gameObject == jogador && colisor.gameObject == barraGanhou)
{
sfxFim.GetComponent<AudioSource>().Play();
SceneManager.LoadScene(1);
}
if (this.gameObject == jogador && colisor.gameObject.tag == "Shot" && colisor.gameObject.activeInHierarchy && !colisor.gameObject.GetComponent<BoxCollider2D>().isTrigger)
{
sfxFim.GetComponent<AudioSource>().Play();
SceneManager.LoadScene(2);
}
if (this.gameObject.tag == "Enemie" && colisor.gameObject.tag == "Shot")
{
if(this.gameObject == inimigos[0] && tiro0)
{
Destroy(inimigos[0]);
tiros[0].SetActive(false);
tiros[0].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[0].transform.position = new Vector3(0, 0, 0);
tiro0 = false;
tiros[1].SetActive(false);
tiros[1].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[1].transform.position = new Vector3(0, 0, 0);
tiro1 = false;
tiros[2].SetActive(false);
tiros[2].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[2].transform.position = new Vector3(0, 0, 0);
tiro2 = false;
tiros[3].SetActive(false);
tiros[3].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[3].transform.position = new Vector3(0, 0, 0);
tiro3 = false;
tiros[4].SetActive(false);
tiros[4].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[4].transform.position = new Vector3(0, 0, 0);
tiro4 = false;
tiros[5].SetActive(false);
tiros[5].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[5].transform.position = new Vector3(0, 0, 0);
tiro5 = false;
j = 0;
}
else if (this.gameObject == inimigos[1] && tiro1)
{
Destroy(inimigos[1]);
tiros[0].SetActive(false);
tiros[0].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[0].transform.position = new Vector3(0, 0, 0);
tiro0 = false;
tiros[1].SetActive(false);
tiros[1].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[1].transform.position = new Vector3(0, 0, 0);
tiro1 = false;
tiros[2].SetActive(false);
tiros[2].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[2].transform.position = new Vector3(0, 0, 0);
tiro2 = false;
tiros[3].SetActive(false);
tiros[3].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[3].transform.position = new Vector3(0, 0, 0);
tiro3 = false;
tiros[4].SetActive(false);
tiros[4].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[4].transform.position = new Vector3(0, 0, 0);
tiro4 = false;
tiros[5].SetActive(false);
tiros[5].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[5].transform.position = new Vector3(0, 0, 0);
tiro5 = false;
j = 0;
}
else if (this.gameObject == inimigos[2] && tiro2)
{
Destroy(inimigos[2]);
tiros[0].SetActive(false);
tiros[0].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[0].transform.position = new Vector3(0, 0, 0);
tiro0 = false;
tiros[1].SetActive(false);
tiros[1].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[1].transform.position = new Vector3(0, 0, 0);
tiro1 = false;
tiros[2].SetActive(false);
tiros[2].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[2].transform.position = new Vector3(0, 0, 0);
tiro2 = false;
tiros[3].SetActive(false);
tiros[3].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[3].transform.position = new Vector3(0, 0, 0);
tiro3 = false;
tiros[4].SetActive(false);
tiros[4].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[4].transform.position = new Vector3(0, 0, 0);
tiro4 = false;
tiros[5].SetActive(false);
tiros[5].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[5].transform.position = new Vector3(0, 0, 0);
tiro5 = false;
j = 0;
}
else if (this.gameObject == inimigos[3] && tiro3)
{
Destroy(inimigos[3]);
tiros[0].SetActive(false);
tiros[0].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[0].transform.position = new Vector3(0, 0, 0);
tiro0 = false;
tiros[1].SetActive(false);
tiros[1].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[1].transform.position = new Vector3(0, 0, 0);
tiro1 = false;
tiros[2].SetActive(false);
tiros[2].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[2].transform.position = new Vector3(0, 0, 0);
tiro2 = false;
tiros[3].SetActive(false);
tiros[3].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[3].transform.position = new Vector3(0, 0, 0);
tiro3 = false;
tiros[4].SetActive(false);
tiros[4].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[4].transform.position = new Vector3(0, 0, 0);
tiro4 = false;
tiros[5].SetActive(false);
tiros[5].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[5].transform.position = new Vector3(0, 0, 0);
tiro5 = false;
j = 0;
}
else if (this.gameObject == inimigos[4] && tiro4)
{
Destroy(inimigos[4]);
tiros[0].SetActive(false);
tiros[0].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[0].transform.position = new Vector3(0, 0, 0);
tiro0 = false;
tiros[1].SetActive(false);
tiros[1].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[1].transform.position = new Vector3(0, 0, 0);
tiro1 = false;
tiros[2].SetActive(false);
tiros[2].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[2].transform.position = new Vector3(0, 0, 0);
tiro2 = false;
tiros[3].SetActive(false);
tiros[3].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[3].transform.position = new Vector3(0, 0, 0);
tiro3 = false;
tiros[4].SetActive(false);
tiros[4].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[4].transform.position = new Vector3(0, 0, 0);
tiro4 = false;
tiros[5].SetActive(false);
tiros[5].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[5].transform.position = new Vector3(0, 0, 0);
tiro5 = false;
j = 0;
}
else if (this.gameObject == inimigos[5] && tiro5)
{
Destroy(inimigos[5]);
tiros[0].SetActive(false);
tiros[0].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[0].transform.position = new Vector3(0, 0, 0);
tiro0 = false;
tiros[1].SetActive(false);
tiros[1].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[1].transform.position = new Vector3(0, 0, 0);
tiro1 = false;
tiros[2].SetActive(false);
tiros[2].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[2].transform.position = new Vector3(0, 0, 0);
tiro2 = false;
tiros[3].SetActive(false);
tiros[3].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[3].transform.position = new Vector3(0, 0, 0);
tiro3 = false;
tiros[4].SetActive(false);
tiros[4].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[4].transform.position = new Vector3(0, 0, 0);
tiro4 = false;
tiros[5].SetActive(false);
tiros[5].GetComponent<BoxCollider2D>().isTrigger = true;
tiros[5].transform.position = new Vector3(0, 0, 0);
tiro5 = false;
j = 0;
}
}
}
void OnCollisionExit2D(Collision2D colisor)
{
if(this.gameObject == jogador && colisor.gameObject.tag == "Shot") colisor.gameObject.GetComponent<BoxCollider2D>().isTrigger = false;
}
}
Assim, o jogo tampouco funciona como eu quero, mas o erro é diferente e não sei onde ele está.
tautologias345- Iniciante
- PONTOS : 1492
REPUTAÇÃO : 0
Respeito as regras :
Tópicos semelhantes
» Problema com sistema de tiro do Marcos;-;
» CHAT GPT PRA JOGO DE TIRO? comentem
» Jogo de Tiro em 3° pessoa mais com mira
» Sistema de tiro na diagonal em jogo 2D
» Duvida Com Tiro LineCast Jogo 2D
» CHAT GPT PRA JOGO DE TIRO? comentem
» Jogo de Tiro em 3° pessoa mais com mira
» Sistema de tiro na diagonal em jogo 2D
» Duvida Com Tiro LineCast Jogo 2D
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos